Pregunta

Mi aplicación está intentando instalar un 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);

En mi actividad

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");
            }

Cuando se dispara mi startActivityResult, mi actividad obtiene instantáneamente el código de resultado 0 que corresponde a result_cancelled mientras el sistema instala la interfaz de usuario aún está esperando el permiso del usuario.

enter image description here

Mi actividad para saber si la instalación fue exitosa o no y basada en esa actualización de su interfaz de usuario.

Cualquier ayuda será apreciada.

¿Fue útil?

Solución

Encontró al culpable.

*installIntent.setFlags (intent.flag_activity_new_task);*

Aunque el sistema devuelve la instancia existente de mi actividad a la vida, está en el nueva pila de tareas. Entonces, el sistema cancela la ActivityForResult antes de iniciar la nueva tarea.

Gracias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top