当我使用'startActivity'来安装apk时,如何获得结果代码

sta*_*ust 5 android

我安装了一个apk,它保存在/data/data/package_name/files以下代码的目录中:

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);
Run Code Online (Sandbox Code Playgroud)

我希望它返回一个结果代码来告诉我apk是否安装成功,并且我已经尝试了方法startActivityForResult,但它没有用.

在方法上onActivityResult,它的resultCode始终0(zero)是否成功安装了apk.我能得到这样的结果代码吗?

Imr*_*Ali 5

试试这个.

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

在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>
Run Code Online (Sandbox Code Playgroud)

然后在安装新包时调用此类:

public class PackageReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    // handle install event here
  }
}
Run Code Online (Sandbox Code Playgroud)