我正在尝试通过从登陆页面下载重新安装和更新我的应用程序后重新启动它。我创建了一个如下所示的接收器,启动应用程序的实现仍然保留,但我也没有收到日志中存在的文本:
class UpdateReceiver: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
Logger.d("upgradeissue","getting log")
if(intent?.action == Intent.ACTION_MY_PACKAGE_REPLACED){
val packageName = intent.data?.schemeSpecificPart
if(packageName == context?.packageName && packageName != null){
val launchIntent = context?.packageManager?.getLaunchIntentForPackage(packageName)
launchIntent?.let {
it.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
context.startActivity(it)
}
}
}
}
}
我通过在清单中声明它来监听意图,如下所示:
<receiver
android:name=".common.UpdateReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<data android:scheme="package"/>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>
我在这里查看了其他答案,但似乎没有一个适用于我。我通过从登陆页面下载应用程序来更新应用程序,而不是通过 android studio 重新安装它。 尚未在任何其他 Android 版本上尝试过此操作,但当前设备是 Android 14,并且 Android 14 上也存在更新后重新启动应用程序的要求。
这里有两个问题,ACTION_MY_PACKAGE_REPLACED 不是您可以在清单中声明的豁免广播的一部分。
在 Android 14 中,除了少数例外,您无法从后台启动 Activity