2017-05-11 2 views
2

J'utilise Action_View à install apk en utilisant le code suivantComment obtenir l'installation d'application a échoué événement dans l'application

Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); 
    intent.setDataAndType(Uri.fromFile(new File(location + "myAPK.apk")), 
      "application/vnd.android.package-archive"); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 

Il ouvre la fenêtre d'installation rapide dans l'appareil. Maintenant, l'utilisateur peut installer ou annuler le processus d'installation.

Je ne suis intéressé lorsque l'utilisateur cliquez sur le package d'installation, mais l'installation a échoué en raison d'une raison peut être apk corrompu ou APK signé etc. ne correspondent pas

Comment puis-je capturer l'événement lorsque l'installation a échoué .. Puis-je obtenir la résultat de ACTION_INSTALL_PACKAGE

J'ai lu System Broadcast Messages mais tous sont utilisés pour Pacakge ajouté ou remplacé.

Tout indice?

+0

Avez-vous essayé de lancer le processus avec 'startActivityForResult' puis analyser le rappel au cas où il échoue sur' onActivityResult '? – nano

+0

@nano déclenche le 'OnActivityResult' immédiatement après l'ouverture de la fenêtre d'invite d'installation et n'attend pas la réponse de l'utilisateur. –

+0

Essayez de supprimer 'intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);' – nano

Répondre

2

Lancez l'intention avec startActivityForResult:

Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); 
intent.setDataAndType(Uri.fromFile(new File(location + "myAPK.apk")), 
     "application/vnd.android.package-archive"); 
intent.putExtra(Intent.EXTRA_RETURN_RESULT, true); 
startActivityForResult(intent, MY_CONSTANT); 

Analysons Ensuite, le résultat

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case ... 
    } 
} 
+0

Merci @nano. .. –

3

the documentation for ACTION_INSTALL_PACKAGE Citation:

Sortie: Si EXTRA_RETURN_RESULT, retourne si l'installation a réussi.

the documentation for EXTRA_RETURN_RESULT Citation:

Utilisé comme un champ supplémentaire booléen avec ACTION_INSTALL_PACKAGE ou ACTION_UNINSTALL_PACKAGE. Indique que l'interface utilisateur du programme d'installation doit renvoyer à l'application le code de résultat de l'installation/désinstallation. Le code résultat retourné sera RESULT_OK en cas de succès ou RESULT_FIRST_USER en cas d'échec.

Alors, ajoutez à votre EXTRA_RETURN_RESULTIntent, avec une valeur de true et utiliser startActivityForResult().