gpt4 book ai didi

android - 通过外部广播接收器重启应用程序

转载 作者:行者123 更新时间:2023-11-30 04:02:29 33 4
gpt4 key购买 nike

我已经实现了一个应用程序,它基本上是一个自定义应用程序商店,用于更新和启动一系列相关应用程序。它还需要 self 更新,这是有效的,但应用程序在安装过程中会在没有警告的情况下被终止。在这种情况下,我想自动重启应用程序,以便用户可以在更新后立即继续使用它。

所以我制作了一个单独的应用程序,其中仅包含一个广播接收器,用于监听第一个应用程序包名称的包事件并启动新 Activity 。 永远不会调用该接收器:

<application android:icon="@drawable/ic_launcher"
android:label="@string/app_name">

<receiver android:name=".AppUpdateReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<action android:name="android.intent.action.PACKAGE_ADDED"/>
<action android:name="android.intent.action.PACKAGE_INSTALL"/>
<data android:scheme="package" />
</intent-filter>
</receiver>

在搜索类似的实现时,我看到了直接矛盾的信息,即只有接收器的应用程序是否会执行,以及如果应用程序尚未运行时是否会调用接收器。我什至遇到过example code一个只包含接收器的应用程序,其 list 与我自己的非常相似。那么在这个应用程序中我需要什么来确保每当安装另一个包时调用接收器?

如果有更好的解决方案,我很乐意听到。

最佳答案

根据 Android 的版本,您可能需要启动应用程序组件才能注册 BroadcastReceiver。我的意思是需要有一个启动器 Activity,它必须由用户手动启动。

从 Honeycomb(我认为)开始,除非以某种方式手动启动应用程序,否则不可能让应用程序组件处于“Activity ”状态。这背后的原因是可能会在最终用户不知情的情况下执行不安全的代码。

我怀疑这就是您遇到的情况。要对其进行测试,请将一个简单的“Hello World”Activity 添加到其中包含 BroadcastReceiver 的应用程序。启动 Activity,然后检查 BroadcastReceiver 是否在其他包更新后被调用。

关于android - 通过外部广播接收器重启应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12287814/

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