質問

私のアプリは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が発射されると、私のアクティビティは即座に結果コード0を取得します。これは、システムのインストールUIがまだユーザーの許可を待っている間にresult_cancelledに対応します。

enter image description here

インストールが成功したかどうかを実際に知るための私のアクティビティは、そのUIの更新に基づいています。

どんな助けも感謝されています。

役に立ちましたか?

解決

犯人を見つけました。

*installIntent.setflags(intent.flag_activity_new_task);*

システムは私のアクティビティの既存のインスタンスを生き返らせますが、それは 新しいタスクスタック. 。そのため、システムは新しいタスクを開始する前にActivityForresultをキャンセルします。

ありがとうございました

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top