我的应用正在尝试安装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);
在我的 Activity 中
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激发时,我的 Activity 立即获得结果代码0,该结果代码与RESULT_CANCELLED对应,而系统安装UI仍在等待用户权限。
我的 Activity 实际上是要了解安装是否成功,并基于该更新来更新其UI。
任何帮助将不胜感激。
最佳答案
找到了罪魁祸首。
* installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); *
尽管该系统使我的 Activity 的现有实例恢复了活力,但它位于新的TASK堆栈中。因此,系统会在启动新任务之前取消activityForResult。
谢谢