2013-04-22 72 views
5

我安裝的是下面的代碼保存在/data/data/package_name/files目錄中的APK:我怎樣才能得到一個resultCode爲當我使用「startActivity」以安裝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); 

我希望它返回一個resultCode爲告訴我是否apk安裝成功與否,我嘗試了startActivityForResult的方法,但它沒有奏效。

onActivityResult的方法上,resultCode始終是0(zero),無論apk是否安裝成功。我可以得到這樣的結果代碼嗎?

+0

簡單的答案是 「你不能」。安裝程序活動不會返回任何結果。 – 2013-04-22 09:28:11

+0

[在android上以編程方式安裝APK]可能的副本(http://stackoverflow.com/questions/6362479/install-apk-programmatically-on-android) – 2013-09-19 19:03:53

回答

5

試試這個。

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

添加您的接收器上的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> 

這個類,然後安裝一個新包時被調用:

public class PackageReceiver extends BroadcastReceiver { 

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

謝謝!有效。但添加'android:enabled =「true」android:exported =「true」'後。我編輯了你的答案。 – breceivemail 2013-10-02 07:47:42

+0

這很好。請接受答案。 – 2013-10-02 09:51:55