Android 14 设备未接收 Intent.ACTION_MY_PACKAGE_REPLACED

问题描述 投票:0回答:1

我正在尝试通过从登陆页面下载重新安装和更新我的应用程序后重新启动它。我创建了一个如下所示的接收器,启动应用程序的实现仍然保留,但我也没有收到日志中存在的文本:

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 上也存在更新后重新启动应用程序的要求。

android kotlin android-studio broadcastreceiver
1个回答
0
投票

这里有两个问题,ACTION_MY_PACKAGE_REPLACED 不是您可以在清单中声明的豁免广播的一部分。

Android 14 中,除了少数例外,您无法从后台启动 Activity

© www.soinside.com 2019 - 2024. All rights reserved.