当我的应用程序处于后台时,如何从广播接收器或服务启动另一个应用程序

How to start another application from broadcast-receiver or a service when my application is in background

提问人:Zeeshan Shahid 提问时间:10/31/2022 更新时间:10/31/2022 访问量:189

问:

我的应用程序在收到通知时需要打开一些其他应用程序。现在,当我的应用程序在前面并且我在收到通知后打开应用程序时,它工作正常。但是,当已经在我的应用程序之上打开了另一个应用程序时,启动时不会启动另一个应用程序。我试过这种方式。

class AppReceiver : BroadcastReceiver() {
    companion object {
        const val TAG = "AppReceiver"
    }

    override fun onReceive(context: Context, intent: Intent) {
        try {
            if (intent.action == "packageUpdated") {
                val packageName = intent.getStringExtra("packageName") ?: ""
                launchPackage(context, packageName)
            }
        } catch (ex: Exception) {
            ex.printStackTrace()
        }
    }


fun launchPackage(context: Context, packageName: String) {
    try {
        val intent = context.packageManager.getLaunchIntentForPackage(packageName)
        if (intent == null) {
            Log.e(TAG,"Intent not found")
        } else {
            context.startActivity(intent)
        }
    } catch (ex: Exception) {
        ex.printStackTrace()
    }
}


}

接收方的清单:

<receiver
    android:name=".AppReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="packageUpdated" />
    </intent-filter>
</receiver>

launchPackage 在应用程序位于顶部时首次工作,但当应用程序在 backstack 中时则不然。在这种情况下,它也不会有任何例外。

我需要每当广播接收器侦听是否有更新的应用程序包名称时。它应该启动该应用程序。

Android BroadcastReceiver 启动活动

评论


答: 暂无答案