2013-04-22 45 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