Question

Mon application essaie d'installer 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);

Dans mon activité

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

Lorsque mon startActivityResult est licencié, mon activité obtient instantanément le code de résultat 0 qui correspond à result_cancellé tandis que l'interface utilisateur du système attend toujours l'autorisation de l'utilisateur.

enter image description here

Mon activité pour savoir si l'installation a réussi ou non et sur la base de cette mise à jour de son interface utilisateur.

Toute aide sera appréciée.

Était-ce utile?

La solution

Trouvé le coupable.

*installIntent.setflags (intent.flag_activity_new_task); *

Bien que le système ramène l'instance existante de mon activité à la vie, elle est dans le nouvelle pile de tâches. Ainsi, le système annule l'activité Forresult avant de commencer la nouvelle tâche.

Merci

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top