提问人:Zeeshan Shahid 提问时间:10/31/2022 更新时间:10/31/2022 访问量:189
当我的应用程序处于后台时,如何从广播接收器或服务启动另一个应用程序
How to start another application from broadcast-receiver or a service when my application is in background
问:
我的应用程序在收到通知时需要打开一些其他应用程序。现在,当我的应用程序在前面并且我在收到通知后打开应用程序时,它工作正常。但是,当已经在我的应用程序之上打开了另一个应用程序时,启动时不会启动另一个应用程序。我试过这种方式。
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 中时则不然。在这种情况下,它也不会有任何例外。
我需要每当广播接收器侦听是否有更新的应用程序包名称时。它应该启动该应用程序。
答: 暂无答案
评论