【发布时间】:2015-09-04 15:04:02
【问题描述】:
我目前正在创建一个应用程序,该应用程序可以通过从服务器下载的 .apk 从自己的代码进行更新。
我想知道应用程序的更新/安装是否成功。因为目前更新工作正常,但我不知道安装/更新是否正常,安装是否遇到问题,或者用户是否取消安装或其他。所以我需要一个回调“installFinish(boolean isOk)”。
我搜索了一天,但没有找到解决问题的方法。
我读了很多东西,尤其是这个:
How to find out when an installation is completed
或者这个:
Android - Install Application programmatically with result
但不是我所寻找的。 这是我的应用程序更新代码
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file.getAbsoluteFile()), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
((Activity) context).startActivity(intent);
编辑
但我认为这对我不起作用有两个原因:
不知道用户是否按下了取消
onActivityResult 在更新同一个应用程序后永远不会调用,可能是因为它是同一个应用程序更新了启动意图的应用程序被杀死。 ?
也许最后一个原因与我没有收到广播事件的原因相同,例如在启动更新的应用中收听 ACTION_PACKAGE_ADDED。
也许我可以在应用程序第一次启动时调用该方法,就像安装成功一样,因为应用程序已启动。
【问题讨论】:
-
同时,您本可以告诉我们通过应用程序本身安装新版本的 apk 存在什么问题。
-
我没有安装/更新应用程序的问题,它工作正常,但我需要知道从我的应用程序安装我的应用程序的新 apk 是否成功。也许在安装过程中,用户杀死安装或设备空间不足,或其他问题......所以我需要知道安装是否成功,因为我需要调用一个方法
installFinish(boolean isOk) -
您没有描述问题。在哪里/谁(你想)调用那个方法?哪个应用程序?什么时候?
-
不清楚。 `我需要在启动要更新的意图的应用程序中调用该方法`。您是在说一个应用程序启动这样的意图来安装另一个自己的 apk 吗?让我们一步一步来处理。
-
您想在应用程序的哪个实例中调用 installFinish() ?在旧实例或新实例中?意识到旧实例在安装新 apk 之前被杀死。除非用户再次启动它,否则不会有您的应用程序的新实例。你从来没有谈过那个问题。问题!
标签: android android-intent android-pendingintent intentfilter android-broadcast