2013-04-22 11 views
5

zainstalowaniu APK, który został zapisany w katalogu /data/data/package_name/files z kodów poniżej:jak mogę dostać ResultCode gdy używam „startActivity” zainstalować 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); 

chcę wrócić ResultCode powiedzieć mi, czy apk zainstalowany pomyślnie, czy nie, i próbowałem metody startActivityForResult, ale to nie działa.

Zgodnie z metodą onActivityResult, jej resultCode jest zawsze 0(zero), czy apk został zainstalowany pomyślnie czy nie. Czy mogę uzyskać taki kod wynikowy?

+0

Prosta odpowiedź brzmi "nie można". Aktywność instalatora nie zwraca żadnego wyniku. –

+0

możliwy duplikat [Zainstaluj APK programowo na Androidzie] (http://stackoverflow.com/questions/6362479/install-apk-programmatically-on-android) –

Odpowiedz

5

Spróbuj tego.

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

Dodaj swój odbiornik 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> 

Ta klasa jest wywoływana wtedy, gdy jest zainstalowany nowy pakiet:

public class PackageReceiver extends BroadcastReceiver { 

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

Dzięki! zadziałało. Ale po dodaniu 'android: enabled =" true "android: exported =" true "'. Zmieniłem twoją odpowiedź. – breceivemail

+0

To dobrze. Przyjmij proszę odpowiedź. –

Powiązane problemy