Pergunta

Meu aplicativo está tentando instalar um apk.

Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
installIntent.setData(Uri.fromFile(new File(pathToApk)));
installIntent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
installIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
((Activity)context).startActivityForResult(installIntent, Constants.APP_INSTALL_REQUEST);

Na minha atividade

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case Constants.APP_INSTALL_REQUEST:
            if(resultCode == RESULT_OK){
                Log.e(TAG, "Package Installation Success");
            }else if(resultCode == RESULT_FIRST_USER){
                Log.e(TAG, "Package Installation Cancelled by USER");
            }else{
                Log.e(TAG, "Something went wrong - INSTALLATION FAILED");
            }

Quando meu StartActivityResult é demitido, minha atividade obtém instantaneamente o código de resultado 0, que corresponde ao resultado_Cancelled enquanto o sistema de instalação do sistema ainda está aguardando a permissão do usuário.

enter image description here

Minha atividade para realmente saber se a instalação foi bem -sucedida ou não e com base nessa atualização de sua interface do usuário.

Qualquer ajuda será apreciada.

Foi útil?

Solução

Encontrou o culpado.

*InstallIntent.SetFlags (Intent.flag_activity_new_task);*

Embora o sistema traga a instância existente da minha atividade de volta à vida, está no nova pilha de tarefas. Portanto, o sistema cancela o ActivityForResult antes de iniciar a nova tarefa.

obrigada

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top