2013-04-22 5 views
5

ho installato un apk che è stato salvato nella directory di /data/data/package_name/files con i codici di seguito:come posso ottenere un ResultCode quando uso 'startActivity' di installare un 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); 

voglio che per restituire un ResultCode da raccontare se l'apk è stato installato correttamente o meno, e ho provato il metodo startActivityForResult, ma non ha funzionato.

Su metodo di onActivityResult, è resultCode è sempre 0(zero) se apk installato correttamente o meno. Posso ottenere un codice risultato del genere?

+0

La semplice risposta è "non si può". L'attività di installazione non restituisce alcun risultato. –

+0

possibile duplicato di [Installa APK a livello di programmazione su Android] (http://stackoverflow.com/questions/6362479/install-apk-programmatically-on-android) –

risposta

5

provare questo.

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

Aggiungi il tuo ricevitore 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> 

Questa classe viene poi chiamato quando viene installato un nuovo pacchetto:

public class PackageReceiver extends BroadcastReceiver { 

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

Grazie! ha funzionato. Ma dopo aver aggiunto 'android: enabled =" true "android: exported =" true "'. Ho modificato la tua risposta. – breceivemail

+0

Questo va bene. Gentilmente accetta la risposta. –

Problemi correlati