gpt4 book ai didi

Android 以 Intent.ACTION_INSTALL_PACKAGE 开始一个 Activity 并且不返回额外的返回结果

转载 作者:太空狗 更新时间:2023-10-29 12:48:21 26 4
gpt4 key购买 nike

我正在尝试对我正在编写的应用程序进行编程更新,因为它不是 Google Play 应用程序,我想提供一种进行更新的方法。

我一直在四处搜索,找到了如何在下载更新 APK 后启动 Android 安装程序,但我需要从安装程序中获取结果,告诉我更新是否成功,或者是否它已被用户取消。

我在 StackOverflow 上看到了一堆关于这个的问题,答案通常涉及使用广播接收器。问题是它只能接收关于正在安装的包的 Intent ,而不是关于取消安装失败的 Intent 。

我做了更多研究,似乎 Intent API 提供了一些额外功能,例如 Intent.EXTRA_RETURN_RESULT,如果设置为 true,应该从安装程序 Activity 返回结果 - 我猜是通过 onActivityResult。不幸的是,这不起作用。有没有人让这个工作/它像这样工作吗?

这是准备安装程序 Activity 开始的代码,我目前拥有:

            Intent installApp = new Intent(Intent.ACTION_INSTALL_PACKAGE);
installApp.setData(downloadedApk);
installApp.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
installApp.putExtra(Intent.EXTRA_RETURN_RESULT, true);
installApp.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME, context.getApplicationInfo().packageName);
context.startActivityForResult(installApp, 1);

最佳答案

您使用 Fragments 吗? onActivityResult 将从您调用 startActivity(...) 的 Activity 或 Fragment 调用。 Fragment#startActivity(...) 确实存在。使用它来调用 Fragment 的 onActivityResult(...)。如果您不使用 Fragments,此变通办法将起作用。

变通伪代码

// CURRENT_VERSION is a const with the current APK version as int

Activity#onStart() {
super.onStart();
checkForUpdaterResult();
/*...*/
}

Activity#checkForUpdaterResult() {
final int updateVersion = preferences.getInt(UPDATE_VERSION, -1);
switch(updateVersion) {
case -1:break;
default:
// updateVersion = oldVersion is smaller than the new currentVersion
boolean success = updateVersion < CURRENT_VERSION;
onUpdaterPerformed(success, updateVersion , CURRENT_VERSION);
break;
}
}

Activity#startUpdate(File pAPK) {
perferences.putInt(UPDATE_VERSION, CURRENT_VERSION);
/*...*/
}

Activity#onUpdaterPerformed(boolean pSuccess, int pFromVersion, int pToVersion) {
Toast.show("Update success: " + pSuccess);
/* e.g. migrate DB */
/*...*/
}

关于Android 以 Intent.ACTION_INSTALL_PACKAGE 开始一个 Activity 并且不返回额外的返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15366472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com