本文仅针对Android11,如果你的模拟器或设备是Android11的话,请继续看下去。
一、提出问题最近在使用一个应用绑定另外一个应用的Service时,无论如何都绑定不上,现象是Service的onCreate()和onStartCommand()回调都没有执行。说明应用之间的通信出现了问题。
二、调查过程了解到我们现在使用的模拟器使用的是Android11,所以抱着试一试的态度去看了一下Android11的新特性。发现在Android11中新增了一项“包可见性”。
参考连接:Android官方文档-Android11新特性
通过这个描述,感觉我遇到的问题与这个有一定的关系。
进一步调查,原来Android11中限制了应用的可见性。同时,只有部分应用是对所有应用自动可见的。链接:Android官方文档-自动可见应用
三、解决方案方案一:在Manifest中添加
参考链接:Android官方文档-查询指定软件包并与之交互
...
方案二:在Manifest中添加
参考链接:Android官方文档-在给定 intent 过滤器的情况下查询应用及与之交互
...
方案三:如果使用content provider,则需要在
参考链接:Android官方文档-在给定提供程序授权的情况下查询应用及与之交互
...
方案四:添加QUERY_ALL_PACKAGES权限。
注意:这种方法比较暴力,添加权限后,应用就可以访问所有的已安装应用了。但是官方明确指出不建议这样做。
“在绝大多数情况下,可以通过以下方式实现您应用的用例:与一组自动可见的应用交互,并在您的清单文件中声明您的应用需要访问的其他应用。为了尊重用户隐私,您的应用应请求应用正常工作所需的最小软件包可见性。“
参考链接:Android官方文档-查询所有应用及与之交互
作者:pc_Li
发布于:CSDN
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)