2015-11-04 1 views
1

J'utilise le code suivant pour installer une application depuis mon application. Laisser le paquet pour le code ci-dessus est com.xyz.one.Installez l'Apk mis à jour à partir de la même application elle-même par programme. [Mise à jour apk]

Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/InstallTest.apk")), "application/vnd.android.package-archive"); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 

Maintenant, si j'installe une autre application de package avec le code mentionné, cela fonctionne correctement. Mais si j'essaie le même code pour la version apk mise à jour de la même application, c'est-à-dire com.xyz.one, alors cela donne "Il y a un problème d'analyse du paquet".

Quelqu'un s'il vous plaît aidez-moi comment je peux installer l'apk par programmation à partir de la même application elle-même.

Note: Ma mise à jour apk est présent dans un emplacement externe.

Merci

+0

Avez-vous essayé d'installer apk manuellement? –

+0

@DhavalPatel oui manuellement il s'installe. –

Répondre

0

Avez-vous essayé d'utiliser l'action ACTION_INSTALL_PACKAGE?

Vous pouvez l'utiliser pour lancer le programme d'installation de l'application directement et utiliser quelques arguments pour contrôler le fichier apk et les options d'installation.

(EXTRA_INSTALLER_PACKAGE_NAME, EXTRA_NOT_UNKNOWN_SOURCE, EXTRA_ALLOW_REPLACE et EXTRA_RETURN_RESULT)

+0

Ya j'ai déjà essayé cela mais ne semble pas fonctionner. –

0

Ci-dessous le code fonctionne bien pour moi, je pense que vous pouvez manquer le fichier : // préfixe

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse("file://"+path), "application/vnd.android.package-archive"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
0

Si vous avez un fichier local dans le téléphone ou vous pouvez télécharger avant par programme:

Intent intent = new Intent(Intent.ACTION_VIEW); 

     intent.setDataAndType(
      Uri.fromFile(
         new File(Environment.getExternalStorageDirectory() + "/download/" + "NameOfFille.apk") 
      ), "application/vnd.android.package-archive"); 

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);