Existe uma maneira de determinar qual aplicativo está se baseando em outros aplicativos?
Por exemplo, o aplicativo Facebook Messenger pode desenhar os balões de bate-papo em cima de tudo, mas como sei qual aplicativo está fazendo isso?
Meu problema:
Eu tenho um aplicativo que está desenhando anúncios em cima de tudo e quero saber qual aplicativo está fazendo isso. Não apenas para desinstalá-lo, mas para avisar a todos que usam este aplicativo. (Não instalei nenhum aplicativo recentemente e já verifiquei as atualizações recentes.)
Tentei usar a Hierarquia do Dump View para UI Automator no Android Studio, mas parece que os aplicativos que aparecem na parte superior não podem ser selecionados dessa maneira.
(Clique na imagem para ampliar)
applications
overlay
andreroggeri
fonte
fonte
Respostas:
Nota:
Editar: reduza a busca na solução anterior e siga apenas esta seção editada.
Configure adb e execute este comando:
Você obteria a saída de todas as sobreposições ativas na tela. Exemplo de uma saída com o DU Screen Recorder, Tasker e AZ Screen Recorder mostrando sobreposições ativas na tela:
O texto destacado ao lado de package = e antes do appop é o (s) nome (s) do pacote do (s) aplicativo (s) atualmente desenhando sobreposição na tela. No seu caso, a saída, incluindo os nomes dos pacotes, será diferente.
Anote os nomes dos pacotes (doravante denominados PKG) e execute este comando:
Substitua PKG pelo nome do pacote que você anotou. Se você tiver vários nomes de pacotes, repita o comando com um nome de pacote por vez.
O comando interromperia o aplicativo com força e descartaria a sobreposição. Isso deve funcionar. Como alternativa, você pode retirar a permissão de "Desenhar sobre outros aplicativos" (sobreposição de tela em resumo) dos aplicativos usando este comando:
Mais uma vez, substitua PKG pelo nome do pacote, conforme necessário. Além disso, pode ser necessário repetir o comando force-stop para o PKG. Se você decidir reverter as alterações, substitua ignorar por permitir no comando acima mencionado.
Como alternativa, você pode usar o App Ops para gerenciar as permissões da GUI.
Para saber qual nome do pacote corresponde a qual aplicativo, você pode tentar um aplicativo de código aberto, como Informações sobre aplicativos . Pesquise pelo nome do pacote e você obterá o nome do aplicativo.
Edição concluída
Você realmente não precisa mais ler agora . Estou deixando a solução anterior (ou seja, a seção a seguir) intacta, porque 21 pessoas que votaram acharam isso útil e eu não quero mais estragar tudo.
Uma maneira simples seria descobrir todos os aplicativos com a permissão "desenhar sobre outros aplicativos" e depois selecioná-los dentre os que estão atualmente ativos na tela. Posteriormente, envolva a interrupção forçada desses aplicativos comuns até apontar o aplicativo responsável pela sobreposição ativa.
Enumerar aplicativos com permissão para sobreposição
A permissão exigida por um aplicativo para criar uma sobreposição é
android.permission.SYSTEM_ALERT_WINDOW
(desenhar sobre outros aplicativos).Precisamos descobrir todos os aplicativos instalados com a referida permissão. Cabe a você descobrir um método para isso. Minha resposta aqui pode ajudá-lo.
Observe que precisamos dos nomes dos pacotes dos aplicativos e não de seus rótulos.
Escolha cereja nas janelas ativas
Execute o comando
Isso fornecerá detalhes sobre o que está causando a exibição de algo na tela, incluindo o nome do componente de um aplicativo que está causando o problema.
A decisão de como você extrairia o nome é sua. Você pode tentar este comando no entanto
Se você receber o erro: 'grep' não é reconhecido como um comando interno ou externo , no Windows, tente este comando alternativo:
Saída de demonstração
Na saída acima, qualquer coisa com êxito
u0
e precedente/
é o nome do pacote de um aplicativo. Um aplicativo pode ter vários componentes exibindo algo na tela.Você deve criar uma lista desses nomes de pacotes. Se você tiver o BusyBox instalado , poderá fazer
De qualquer forma, agora você teria duas listas:
android.permission.SYSTEM_ALERT_WINDOW
.Compare essas duas listas e selecione aplicativos comuns em ambas as listas. Essa terceira lista constituiria aplicativos com permissão para desenhar sobreposições e atualmente está desenhando uma sobreposição ativa na tela.
Hora de matar
Mate cada um dos aplicativos da terceira lista, um por um, e observe o estado da sobreposição. Você pode usar
am force-stop PACKAGE_NAME --user 0
ou qualquer outro método que melhor lhe convier.PACKAGE_NAME
é o nome do pacote do aplicativo.EDIT : Não é necessário matar um aplicativo. Você pode negar ao aplicativo a permissão para passar por cima de outros aplicativos. Use este comando:
Para reverter as alterações, substitua deny por allow no referido comando e execute-o.
Se você estiver executando o Android Marshmallow, esta resposta de Andrew T. pode ser usada.
Nota: O comando acima mencionado foi testado com sucesso no Android 5.1.1 e 6.0.1 (compilações do CM). Também é possível que o comando funcione no Android 5.0.x, mas não posso garantir . A execução desse comando na versão Android lançada antes do Lollipop causaria falha.
Como muitas vezes a sobreposição é perceptível, ela desaparece instantaneamente no momento em que o aplicativo que o causa é eliminado; portanto, você saberia qual aplicativo estava causando essa sobreposição.
Aplicativos para aplicativos
Originalmente sugerido por Izzy, você pode usar um aplicativo com a funcionalidade de listar permissões concedidas aos aplicativos instalados, para destacar os aplicativos com a permissão "desenhar sobre outros aplicativos". Você pode pesquisar esse aplicativo por conta própria ou usar o verificador de permissão da lista mantido por Izzy em seu site.
Você também precisaria de um gerente de processo / aplicativo para forçar / interromper / matar alguns processos. Eu recomendo o OS Monitor, mas você tem a liberdade de usar qualquer aplicativo competente. Veja aplicativos relacionados em Informações do sistema .
Apenas para fins de demonstração
Tentei o Advanced Permission Manager para listar aplicativos com permissão para "desenhar sobre outros aplicativos". Depois, mudei para o OS Monitor para ver os aplicativos sendo executados em primeiro e segundo plano. Combinei a saída dos dois aplicativos e parei individualmente os aplicativos comuns em ambos. Você pode interromper um processo de dentro do Monitor do SO, portanto, não é necessário alternar para as configurações do aplicativo.
(Clique na imagem para ampliar)
fonte
Se você estiver usando o Android 6.0 Marshmallow, poderá usar o gerenciador de permissões nativo.
De um artigo sobre BGR ,
Para listar os aplicativos que podem desenhar sobre outros aplicativos, vá para Configurações - Aplicativos - Avançado (menu com ícone de engrenagem) - Passe sobre outros aplicativos .
Você também pode ativar / desativar o recurso temporariamente tocando no aplicativo e alternar para "Permitir desenho sobre outros aplicativos".
Imagem cortesia de Sebastiano Gottardo no Medium
fonte
Muito obrigado @Firelord! Finalmente encontrei o aplicativo que está me impedindo de instalar apk e executar backups adb.
Para mim, achei que era um aplicativo chamado
Battery Mix
Leia para ver o que fiz e como o fiz.https://play.google.com/store/apps/details?id=jp.smapho.battery_mix
Muitas pessoas tiveram problemas com a instalação de apk e não conseguiram pressionar 'Instalar'. Todas as respostas que pude encontrar foram principalmente para exibir aplicativos de escurecimento, tingimento e economia de energia. Como não usei nenhum ou removi todos os aplicativos semelhantes, estava lutando para descobrir o que estava acontecendo e qual aplicativo era o culpado. E finalmente! Após um comando simples e uma pesquisa rápida, ele foi resolvido: D
O aplicativo ofensivo
Battery Mix
é um aplicativo simples de monitoramento da bateria, que tinha a função que eu exibia uma linha fina na parte superior da tela para mostrar o estado do nível da bateria (um ótimo aplicativo pequeno).Portanto, para diagnosticar, usei um comando
Firelord
(acima) para despejar um arquivo de texto e depois procurar o aplicativo que estava causando o sistema Android para impedir que eu clicasse no botão Instalar.Executar comando do PC
adb shell dumpsys window windows > dumpsys-windows.txt
Procurar por
SYSTEM_ALERT_WINDOW
Para encontrar qualquer aplicativo incorreto, procurei a string acima
O que me deu a linha:
mOwnerUid=10129 mShowToOwnerOnly=true package=jp.smapho.battery_mix appop=SYSTEM_ALERT_WINDOW
(Veja o upload da imagem para a seção do arquivo de texto)
imediatamente pude reconhecer a qual aplicativo estava se referindo: jp.smapho. battery_mix
Portanto, agora eu sei como matar esse aplicativo sempre que planejar carregar de lado ou fazer backups adb.
fonte
Para Android Marshmallow e Oxygen 3.0.2, pop-up Desativar layout da tela
Vá para Aplicativos, configure Aplicativos e selecione Desenhar sobre outros aplicativos.
Vá e selecione o aplicativo para desativá-lo, para que o aplicativo seja desbloqueado da persmissão de layout da tela. e o aplicativo pode obter permissões diretamente
Acesse o aplicativo e as permissões respectivas e ative as permissões desejadas.
Apreciar
Raj
fonte