Ir ao conteúdo
  • Cadastre-se

AgnaldoMR

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

0
  1. Olá pessoal! Preciso muito da ajuda de vocês. Abraço. Não estou conseguindo que o App traga as autorizações e consequentemente não consigo acessar a Classe ConfiguracoesActivity. Pelo menos não pela instalação direta do apk (loja Google e local) e nem completa por Debug pelo Android Studio. Elas só vêm a ser visualizadas e tem acesso à galeria e à câmera com a depuração linha à linha. Se eu autorizo manualmente no celular (câmera e arquivos), quando na instalação direta do apk ou instalação pelo Android Studio, consigo acessar a classe, mas, não consigo utilizar a Câmera e nem a Galeria. Volta para activity anterior ao clicar em ambos os botões e sem log de erro que possa ajudar com mais clareza. Estou testando direto no celular com Android versão 10, API 29. Testei em celular com o modo desenvolvedor ativado e em outro celular sem o modo desenvolvedor. Já tentei desinstalar e instalar novamente o App e não resolveu. Segue o log-cat no momento do click: Click Botão Câmera E/ViewRootImpl: sendUserActionEvent() mView returned. E/ViewRootImpl: sendUserActionEvent() mView returned. E/NetworkScheduler.ATC: Called cancelTask for already completed task com.google.android.gms/.measurement.PackageMeasurementTaskService{u=0 tag="Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG" trigger=window{start=2435s,end=4872s,earliest=-3150s,latest=-713s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=-5585s last_run=-641s exec_window_multiplier=1.0000 jid=N/A status=ACTIVE retries=0 client_lib=GMS_TASK_SCHEDULER-211213000} :1 [CONTEXT service_id=218 ] E/NetworkScheduler.ATC: Called cancelTask for already completed task com.google.android.gms/.measurement.PackageMeasurementTaskService{u=0 tag="Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG" trigger=window{start=2435s,end=4872s,earliest=-3150s,latest=-713s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=-5585s last_run=-641s exec_window_multiplier=1.0000 jid=N/A status=ACTIVE retries=0 client_lib=GMS_TASK_SCHEDULER-211213000} :1 [CONTEXT service_id=218 ] E/WindowManager: win=Window{7f49c55 u0 Splash Screen com.sec.android.app.camera EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.AppWindowToken.destroySurfaces:1190 com.android.server.wm.AppWindowToken.destroySurfaces:1171 com.android.server.wm.WindowState.onExitAnimationDone:4994 com.android.server.wm.-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4.accept:2 java.util.ArrayList.forEach:1262 com.android.server.wm.AppWindowToken.onAnimationFinished:3496 com.android.server.wm.-$$Lambda$yVRF8YoeNdTa8GR1wDStVsHu8xM.run:2 E/BufferQueueProducer: [com.amrcodeti.course.empresa/com.amrcodeti.course.empresa.activity.ConfiguracoesActivity$_19666#0] disconnect: not connected (req=1) E/WindowManager: win=Window{8e5e5af u0 com.amrcodeti.course.empresa/com.amrcodeti.course.empresa.activity.ConfiguracoesActivity} destroySurfaces: appStopped=true win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8 caller=com.android.server.wm.AppWindowToken.destroySurfaces:1190 com.android.server.wm.AppWindowToken.destroySurfaces:1171 com.android.server.wm.AppWindowToken.notifyAppStopped:1226 com.android.server.wm.ActivityRecord.activityStoppedLocked:2579 com.android.server.wm.ActivityTaskManagerService.activityStopped:2356 android.app.IActivityTaskManager$Stub.onTransact:2183 android.os.Binder.execTransactInternal:1021 E/libprocessgroup: set_timerslack_ns write failed: Operation not permitted E/libprocessgroup: set_timerslack_ns write failed: Operation not permitted E/NetworkScheduler.ATC: Called cancelTask for already completed task com.google.android.gms/.measurement.PackageMeasurementTaskService{u=0 tag="Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG" trigger=window{start=2435s,end=4872s,earliest=-3152s,latest=-715s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=-5587s last_run=-643s exec_window_multiplier=1.0000 jid=N/A status=ACTIVE retries=0 client_lib=GMS_TASK_SCHEDULER-211213000} :1 [CONTEXT service_id=218 ] E/Layer: [Surface(name=AppWindowToken{9111a02 token=Token{a88bf4d ActivityRecord{56eac76 u0 com.amrcodeti.course.empresa/.activity.ProdutoControleActivity t355}}})/@0x99b6841 - animation-leash#0] No local sync point found E/Layer: [Surface(name=AppWindowToken{f9ecf97 token=Token{4ce2a16 ActivityRecord{567331 u0 com.sec.android.app.launcher/.activities.LauncherActivity t154}}})/@0x6d06094 - animation-leash#0] No local sync point found E/Layer: [Surface(name=34f0ecf com.android.systemui.ImageWallpaper)/@0x660f47d - animation-leash#0] No local sync point found E/BufferQueueProducer: [com.amrcodeti.course.empresa/com.amrcodeti.course.empresa.activity.ProdutoControleActivity$_19666#0] disconnect: not connected (req=1) E/WindowManager: win=Window{eae935 u0 com.amrcodeti.course.empresa/com.amrcodeti.course.empresa.activity.ProdutoControleActivity} destroySurfaces: appStopped=true win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8 caller=com.android.server.wm.AppWindowToken.destroySurfaces:1190 com.android.server.wm.AppWindowToken.destroySurfaces:1171 com.android.server.wm.AppWindowToken.notifyAppStopped:1226 com.android.server.wm.ActivityRecord.activityStoppedLocked:2579 com.android.server.wm.ActivityTaskManagerService.activityStopped:2356 android.app.IActivityTaskManager$Stub.onTransact:2183 android.os.Binder.execTransactInternal:1021 Click Botão Galeria E/ViewRootImpl: sendUserActionEvent() mView returned. E/ViewRootImpl: sendUserActionEvent() mView returned. E/NetworkScheduler.ATC: Called cancelTask for already completed task com.google.android.gms/.measurement.PackageMeasurementTaskService{u=0 tag="Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG" trigger=window{start=2435s,end=4872s,earliest=-2938s,latest=-501s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=-5373s last_run=-429s exec_window_multiplier=1.0000 jid=N/A status=ACTIVE retries=0 client_lib=GMS_TASK_SCHEDULER-211213000} :1 [CONTEXT service_id=218 ] E/NetworkScheduler.ATC: Called cancelTask for already completed task com.google.android.gms/.measurement.PackageMeasurementTaskService{u=0 tag="Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG" trigger=window{start=2435s,end=4872s,earliest=-2938s,latest=-501s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=-5373s last_run=-429s exec_window_multiplier=1.0000 jid=N/A status=ACTIVE retries=0 client_lib=GMS_TASK_SCHEDULER-211213000} :1 [CONTEXT service_id=218 ] E/BufferQueueProducer: [com.amrcodeti.course.empresa/com.amrcodeti.course.empresa.activity.ConfiguracoesActivity$_19666#0] disconnect: not connected (req=1) E/BufferQueueProducer: [com.amrcodeti.course.empresa/com.amrcodeti.course.empresa.activity.ConfiguracoesActivity$_19666#0] disconnect: not connected (req=1) E/WindowManager: win=Window{faccb98 u0 com.amrcodeti.course.empresa/com.amrcodeti.course.empresa.activity.ConfiguracoesActivity} destroySurfaces: appStopped=true win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8 caller=com.android.server.wm.AppWindowToken.destroySurfaces:1190 com.android.server.wm.AppWindowToken.destroySurfaces:1171 com.android.server.wm.AppWindowToken.notifyAppStopped:1226 com.android.server.wm.ActivityRecord.activityStoppedLocked:2579 com.android.server.wm.ActivityTaskManagerService.activityStopped:2356 android.app.IActivityTaskManager$Stub.onTransact:2183 android.os.Binder.execTransactInternal:1021 Class ConfiguraçõesActivity import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import android.Manifest; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.ImageDecoder; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import java.util.ArrayList; import java.util.List; import dmax.dialog.SpotsDialog; public class ConfiguracoesActivity extends AppCompatActivity { private String[] permissoesNecessarias = new String[]{ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA }; private ImageButton imageButtonCamera, imageButtonGaleria; private static final int SELECAO_CAMERA = 100; private static final int SELECAO_GALERIA = 200; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_configuracoes); //Validar permissões Permissao.validarPermissoes(permissoesNecessarias, this, 1); imageButtonCamera = findViewById(R.id.imageButtonCamera); imageButtonGaleria = findViewById(R.id.imageButtonGaleria); imageButtonCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if ( i.resolveActivity(getPackageManager()) != null ){ startActivityForResult(i, SELECAO_CAMERA ); } } }); imageButtonGaleria.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI ); if ( i.resolveActivity(getPackageManager()) != null ){ startActivityForResult(i, SELECAO_GALERIA ); } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if ( resultCode == RESULT_OK ){ Bitmap imagem = null; try { switch ( requestCode ){ case SELECAO_CAMERA: imagem = (Bitmap) data.getExtras().get("data"); break; case SELECAO_GALERIA: Uri localImagemSelect = data.getData(); if (android.os.Build.VERSION.SDK_INT >= 29){ // Para uso da depreciação em versões mais novas imagem = ImageDecoder.decodeBitmap(ImageDecoder.createSource(getContentResolver(), localImagemSelect)); } else{ // Para uso de versões anteriores (getBitmap = depreciada) imagem = MediaStore.Images.Media.getBitmap(getContentResolver(), localImagemSelect); } break; } //Implementação para salvar a imagem omitida (pois, o problema é acessar a galeria e a câmera - Imagem (Câmera ou Galeria) é adicionada à uma imageView) }catch (Exception e){ exibirMensagem("Erro ao salvar Imagem: \n" + e.getMessage()); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); for ( int permissaoResultado : grantResults ){ if ( permissaoResultado == PackageManager.PERMISSION_DENIED ){ alertaValidacaoPermissao(); } } } private void alertaValidacaoPermissao(){ … } } Class Permissão import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.provider.Settings; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import java.util.ArrayList; import java.util.List; public class Permissao { public static boolean validarPermissoes(String[] permissoes, Activity activity, int requestCode){ if (Build.VERSION.SDK_INT >= 23 ){ List<String> listaPermissoes = new ArrayList<>(); /*Percorre as permissões passadas, verificando uma a uma * se já tem a permissao liberada */ for ( String permissao : permissoes ){ Boolean temPermissao = ContextCompat.checkSelfPermission(activity, permissao) == PackageManager.PERMISSION_GRANTED; if ( !temPermissao ) listaPermissoes.add(permissao); } /*Caso a lista esteja vazia, não é necessário solicitar permissão*/ if ( listaPermissoes.isEmpty() ) return true; String[] novasPermissoes = new String[ listaPermissoes.size() ]; listaPermissoes.toArray( novasPermissoes ); //Solicita permissão ActivityCompat.requestPermissions(activity, novasPermissoes, requestCode ); } return true; } } Manifest <uses-feature android:name="android.hardware.camera2" android:required="false" /> <!-- Loja Google não disponibiliza mais instalação com "true" --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> Projeto minSdkVersion 16 targetSdkVersion 30
  2. Desculpe-me pelo texto longo. É assim: Estou inflando um layout personalizado no clique de um TextView pelo "MyViewHolder holder" utilizando o AlertDialog.Builder implementado em uma classe Adapter. Infla perfeitamente, sem erros. O fato é que quando clico no layout inflado para alterar o valor no EditText, normalmente com um clique de velocidade média, o App simplesmente fecha. Coloquei tudo em um bloco try/catch, mesmo assim não mostra o erro. Se eu clico e seguro um pouco mas ele aceita (nem sempre), não fecha e a ação, quando confirmo no botão do AlertDialog, é executada sem problemas. Tentei depurar e todos os valores são preenchidos corretamente. Não traz exceções. E normalmente é no primeiro click depois de carregar o App após um período inativo ou na primeira execução. Aí o App fecha, eu abro novamente e depois segue mais firme, sem erros constantes, mas, ainda ocorrendo um ou outro. Como se faltasse carregar algo completamente! Observando mais minuciosamente, está sendo inflado pela classe Adapter e os erros só ocorrem nas classes Fragments, quando são chamados e clicados. Nas Activity`s não ocorre o fechamento. Não poderia inflar pelo recyclerView, pois, são muitos fragments e eu teria que implementar em cada um. Obs. Eu inflo por um clique numa ImageView do adapter (uma ação) e no textView do adapter (outra ação) = carrinho e favoritos que funcionam em conjunto, mas, com ações distintas.. Alguém teria uma maneira ou um recurso diferente que possa me ajudar à resolver isto? O mais detalhado possível, pois, não tenho muito habilidade ainda. Desde já fico muito grato. Abaixo foram as tentativas que eu fiz e todas funcionam. É só a questão do bug de clique mesmo: 01- import androidx.appcompat.app.AlertDialog; ou 02- import android.app.AlertDialog; 03- LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.dialog_Solicitacao, null, false); builder.setView(view); 04- View view = View.inflate(context,R.layout.dialog_Solicitacao,null); builder.setView(view); 05- AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Solicitação"); builder.setMessage("Digite o valor"); EditText editValor = new EditText(context); builder.setView(editValor); //LAYOUT ORIGINAL INFLADO PELA CLASSE ADAPTER try{ // >>> Caixa de diálogo AlertDialog.Builder builder = new AlertDialog.Builder(context); // builder = construtor builder.setTitle("Carrinho"); builder.setMessage("Exemplo: 2 (igual à 2UN)"); builder.setIcon(R.drawable.logo_marca); //LayoutInflater inflater = LayoutInflater.from(context); //View viewQuantidade = inflater.inflate(R.layout.dialog_quantidade_car, null, false); // ou //View viewQuantidade = LayoutInflater.from(context).inflate(R.layout.dialog_quantidade_car, null); // ou View viewQuantidade = View.inflate(context,R.layout.dialog_quantidade_car,null); editQuantidade = viewQuantidade.findViewById(R.id.editText_DialogQteCar_Quantidade); editQuantidade.setText("1"); // Já recebe um valor padrão editQuantidade.requestFocus(); editQuantidade.selectAll(); // Para focar e selecionar TextView textUnidade = viewQuantidade.findViewById(R.id.textView_DialogQteCar_Unidade); textUnidade.setText("Unidade"); TextView textObserv = viewQuantidade.findViewById(R.id.textView_DialogQteCar_Observacao); textObserv.setText(textObserv.getText()); // Texto padrão do Layout builder.setView(viewQuantidade); builderUp.setPositiveButton("Confirmar", new DialogInterface.OnClickListener(){... closeKeyboard() builderUp.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {... closeKeyboard() AlertDialog dialogUp = builderUp.create(); // Criar dialogUp.show(); // Exibir showKeyboard(); private void showKeyboard(){... // Ativar teclado private void closeKeyboard(){... // Desativar teclado
  3. Minha segunda e desesperada pergunta. Tentei horas e até dias procurar exemplos de aplicação para extensões de conexão do VS 2019 (em c#) com o firebase, mas, sem nenhum sucesso. Sinto que quase ninguém usa por falta de informação mais detalhada. Baixei as extensões FirebaseAuthentication.net, FirebaseDatabase.net e também do FireSharp no VS. Mas, a documentação é muito superficial e não estou conseguindo utilizar. Preciso de exemplo: 1- Enviar e buscar informação de autenticação do usuário com e-mail e senha 2- Acessar os nós e seus filhos para leitura e escrita. 3- O que significa .StartAt(???) .LimitToFirst(???) .OnceAsync(); (do FirebaseDatabase.net) 4- Principais propriedades de cada "using" necessários. 5- Como buscar e enviar dados pelo comando push de id único pelo firebase. Exemplo: var firebase = new Firebase.Database.FirebaseClient("https://fir-app-20502.firebaseio.com/"); var idUser = await firebase .Child("CSharp") .OrderByKey() .StartAt(???) .LimitToFirst(???) .OnceAsync<???>(); Andei vendo alguns vídeos de um indiano sobre o firesharp, mas, não tem nada sobre autenticação. Por favor. Se alguém puder me dar uma direção mais detalhada de como utilizar, fico muito grato. Preciso muito.
  4. Funcionou perfeitamente. Olha que já pesquisei e não encontrei nada no assunto. e tentei muitas vezes sem sucesso. A inexperiência com VBA falou mais alto. Muito obrigado, valeu !!! Espero poder ajudar outros um dia...
  5. Olá caros colaboradores. Vocês têm me ajudado muito. Obrigado. Tenho um problema que não consigo solucionar. Preciso pegar o valor digitado na célula e modificá-lo automaticamente com base em uma condição, acrescentando à ele o valor de outra célula. Tentei assim: Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'Dim index As Integer celula = Range("A" & Target.Row) 'For index = 1 To 1 If Target.Column = 1 Then ThisRow = Target.Row If Target.Value > 0 Then 'Range("C" & ThisRow).Value = Range("A" & ThisRow).Value Range("A" & ThisRow).Value = celula & (Range("B" & ThisRow).Value) 'Range("A" & ThisRow).Value = (Range("C" & ThisRow).Value) & (Range("B" & ThisRow).Value) 'Range("B" & ThisRow).ClearContents 'Range("C" & ThisRow).ClearContents Else Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone End If 'Application.EnableEvents = False End If 'Next 'Exit sub End Sub 'As partes comentadas foram tentativas que fiz sem sucesso. Quando digito 400 na colunaA em uma linha qualquer é acrescentado a unidade KG (da colunaB ) ao valor 400. O resultado é sempre assim. Um loop: 400KGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKGKG Preciso muito de uma solução. Muito obrigado.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...