7

我一直在尝试让一个 android 应用程序以编程方式在 sdcard 上安装一个 APK,但我遇到了一些麻烦。

这就是我的做法:

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

现在一切正常,它带来了包管理器,我可以控制当管理器完成安装 APK 时该做什么。

但是我遇到的问题是,如果在安装结束时用户单击“打开”而不是“完成”,则不会调用“OnActivityResult”方法,因为管理器仍然存在....关于系统的另一个要求的另一个问题。

有没有办法知道用户何时在包管理器的末尾选择了“打开”,或者有没有办法强制管理器只显示我希望它显示的按钮?

真的可以使用帮助,我到处搜索,似乎没有找到解决方案

4

1 回答 1

9

如果安装了新应用程序,您可以添加一个接收器AndroidManifest.xml来收听广播。像这样:

<receiver android:name=".PackageReceiver">
    <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
  }
}
于 2011-07-07T12:00:36.620 回答