Android: exceção de segurança com launchMode= “singleTask”
-
27-10-2019 - |
Pergunta
Eu declarei o modo de inicialização da minha atividade como singleTask.Se eu inicie meu aplicativo, pressione o botão home, vá para um cliente de e-mail (gmail, neste caso) e visualizar um anexo usando meu aplicativo, eu estou tendo uma exceção de segurança nas versões 2.3 e posteriores do Android, que diz que não tenho permissão para acessar o gmail anexos.A exceção não ocorre em versões anteriores e se eu fizer não use singleTask como launchMode.
A exceção ocorre nesta linha-
mContext.getContentResolver().openInputStream(intent.getData());
onde mContext é o contexto da atividade.
Este é um problema conhecido?
Qualquer ajuda será muito apreciada.
Obrigado,
Akshay
Solução
Eu postei isso no Android-developers e recebi essa resposta de Dianne Hackborn-
"Desculpe, provavelmente este é um bug em 2.3 ao tentar conceder uma permissão de URI a uma instância de atividade que já está em execução. Vou examinar isso. Enquanto isso, a única solução pode ser nãouse singleTask para a atividade que está sendo iniciada para uma visualização de um anexo. Esta é realmente a coisa preferida a fazer, uma vez que sua atividade de visualização deve ser executada como sua própria instância como parte da tarefa do Gmail. "
Outras dicas
O problema pode ocorrer porque a atividade do intent chamado na implementação do 2.3 não se ajusta aos requisitos launchMode:"standard"
ou launchMode:"singleTop"
declarados em android: descrição do launchMode .
Mas também seria útil dar uma olhada em este problema:Comportamento de launchMode= “singleTask” não conforme descrito .É assustador, espero que seu problema não esteja enraizado aí e possa ser resolvido com as versões atuais.