Meu aplicativo tem um serviço e uma atividade. No serviço, a atividade é chamada com o seguinte código:
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
mesmo sem os sinalizadores, normalmente a janela de atividades é exibida com seu layout correto. No entanto, no Xiaomi Redmi Note 4 com Android 7, o layout da atividade não é exibido. Eu vejo apenas a seguinte linha no logcat:
Linha de tempo / linha de tempo: Linha de tempo: tempo da solicitação de atividade: 281438674 intenção: intenção {flg = 0x30000000 cmp = com.test.app / .MainActivity}
Acredito que este não é um problema do Android 7 (API 24) porque em outro dispositivo com o Android 7, o serviço pode iniciar a atividade com êxito. Eu acho que o MIUI está impedindo o lançamento da atividade de serviço.
Tentei alterar como a atividade foi definida no manifesto. Eu também tentei com várias bandeiras diferentes. Todos os meus testes falharam. Não consegui iniciar a atividade. O pior problema é que não há erro / exceção nos logs.
Alguma idéia sobre isso, por favor?
Respostas:
Na tela Informações do aplicativo, no aplicativo Configurações do sistema> Outras permissões> Exibir janelas pop-up durante a execução em segundo plano.
Isso parece introduzido no MIUI 11.
Edit: aqui está um pedaço de código que eu uso. Eu adiciono isso a uma lista de permissão em a
RecyclerView
.ATUALIZAÇÃO: Para verificar se essa permissão é concedida, você pode usar um serviço já em execução e iniciar uma atividade fictícia transparente e, na
onCreate
chamada de volta em umLocalBroadcastManager
ou similar, você saberá que é concedida. É uma solução feia, mas pode ser útil para alguns.fonte