未经"Display Over Other Apps"许可从作业服务打开应用



我是android开发新手。我一直试图从JobService打开一个应用程序从隐式广播接收器onReceive()方法调度的

从一些帖子中,我发现可以使用packageManager.getLaunchIntentForPackage()方法,然后使用它通过启动context.startActivity()的新活动来启动所述包,因此我声明了下面的函数:

fun openApp(packageName: String, context: Context){
val startIntent: Intent? =
context.packageManager.getLaunchIntentForPackage(packageName)
startIntent?.addFlags(
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT or
Intent.FLAG_ACTIVITY_NEW_TASK
);
context.startActivity(startIntent)
}

MainActivity文件中,此函数按预期工作,但是当我尝试在JobService上使用它时,我注意到,它只工作,如果我的应用程序有显示在其他应用程序许可。

这是意料之中的吗?有什么办法可以改变这个要求吗?这是因为我在openApp()函数中传递context的方式吗?

提前感谢!

感谢CommonsWare的注释,我找到了我需要的文档:

从后台启动活动的限制.

在我的用例中,我需要取消对特定号码的呼叫并打开我的应用程序,因此我调整了我的代码以利用CallRedirectionService类,它被视为异常,因此可以从后台启动活动。

最新更新