我一直试图让Android应用程序以编程方式在SD卡上安装APK,但我遇到了一些麻烦。
我正是这样做的:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType("ApkFilePath...","application/vnd.android.package-archive");
activity.startActivityForResult(intent,5000);
现在工作正常,它带来了包管理器,我可以控制在经理完成安装APK时要做什么。
但我遇到的问题是,如果在安装结束时用户点击“打开”而不是“完成”,则不会调用“OnActivityResult”方法,因为管理器仍然存在....这就系统的另一个要求提出了另一个问题。
有没有办法知道用户何时在包管理器的末尾选择了“打开”,或者是否有办法强制管理器只显示我希望它显示的按钮?
真的可以使用帮助,我到处搜索,似乎找不到解决方案
答案 0 :(得分:8)
如果安装了新应用,您可以在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
}
}