2013-04-22 3 views
5

ich eine apk installiert zu installieren, die im Verzeichnis von /data/data/package_name/files mit folgenden Codes gespeichert wurden:, wie kann ich eine Result wenn i ‚startActivity‘ verwenden, um ein apk

Uri uri = Uri.fromFile(new File(apkSavingPath)); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(uri,"application/vnd.android.package-archive"); 
mContext.startActivity(intent); 

ich es will eine Result zurückkehren zu sagen, mir, ob die apk erfolgreich installiert oder nicht, und ich habe versucht, Methode startActivityForResult, aber es hat nicht funktioniert.

Auf Methode onActivityResult, es ist resultCode ist immer 0(zero) ob apk erfolgreich installiert oder nicht. Kann ich einen solchen Ergebniscode bekommen?

+0

Die einfache Antwort ist "Sie kann nicht". Installer-Aktivität gibt kein Ergebnis zurück. –

+0

mögliche Duplikate von [APK programmatisch auf Android installieren] (http://StackOverflow.com/questions/6362479/install-apk-programmatisch-on-android) –

Antwort

5

versuchen Sie dies.

Intent intent = new Intent(Intent.ACTION_VIEW);   
intent.setDataAndType("ApkFilePath...","application/vnd.android.package-archive"); 
activity.startActivityForResult(intent,5000); 

Fügen Sie Ihre Empfänger auf AndroidManifest.xml

<receiver android:name=".PackageReceiver" android:enabled="true" android:exported="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_ADDED" /> 
     <action android:name="android.intent.action.PACKAGE_CHANGED" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

Diese Klasse dann aufgerufen wird, wenn ein neues Paket installiert ist:

public class PackageReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    // handle install event here 
    } 
} 
+1

Danke! es funktionierte. Aber nach dem Hinzufügen von 'android: enabled =" true "android: exported =" true "'. Ich habe deine Antwort bearbeitet. – breceivemail

+0

Das ist gut. Bitte akzeptieren Sie die Antwort. –

Verwandte Themen