9

我的应用正在尝试安装 APK。

Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
installIntent.setData(Uri.fromFile(new File(pathToApk)));
installIntent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
installIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
((Activity)context).startActivityForResult(installIntent, Constants.APP_INSTALL_REQUEST);

在我的活动中

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case Constants.APP_INSTALL_REQUEST:
            if(resultCode == RESULT_OK){
                Log.e(TAG, "Package Installation Success");
            }else if(resultCode == RESULT_FIRST_USER){
                Log.e(TAG, "Package Installation Cancelled by USER");
            }else{
                Log.e(TAG, "Something went wrong - INSTALLATION FAILED");
            }

当我的 startActivityResult 被触发时,我的活动立即获得与 RESULT_CANCELLED 相对应的结果代码 0,而系统安装 UI 仍在等待用户许可。

在此处输入图像描述

我的活动实际上是了解安装是否成功并基于该更新其 UI。

任何帮助都将不胜感激。

4

1 回答 1

13

找到了罪魁祸首。

* installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);*

尽管系统使我的活动的现有实例恢复生机,但它位于新的 TASK 堆栈中。因此系统在开始新的 TASK 之前取消了 activityForResult。

谢谢

于 2013-11-07T01:07:56.243 回答