我正在我的应用程序中读取所有已安装的应用程序,以获取“图标”和安卓11中的软件包名称。我必须使用android.permission.QUERY_ALL_PACKAGES
我不想使用<uses-permissions
标签,因为这意味着对Google Play有特殊要求,我的应用程序在android Manifest中使用以下xml标签
<permission android:name="android.permission.QUERY_ALL_PACKAGES" />
然而,显然其他应用程序也在做同样的事情,当他们尝试安装我的应用程序或旁载时,我会收到以下消息:
Failure [INSTALL_FAILED_DUPLICATE_PERMISSION: Package com.package.myApp attempting to redeclare permission android.permission.QUERY_ALL_PACKAGES already owned by com.package.another_app]
有没有办法解决这个问题?非常感谢!
发布于 2021-11-23 13:10:55
我的应用程序在Android Manifest中使用以下xml标记
你不应该通过这一行获得任何额外的功能。你应该只能根据你的<queries>
元素访问这些应用程序,再加上那些对所有应用程序都可见的应用程序,而不考虑包的可见性规则。
然而,显然其他应用程序也在做同样的事情,当他们尝试安装我的应用程序或旁载时,我会收到以下消息:
从Android 11开始,操作系统定义了该权限。应用程序不能重新定义该权限。您的应用程序可能可以安装在许多Android 10及更低版本的设备上。在Android11上,因为操作系统是在你的应用程序之前“安装”的,所以你将不能拥有<permission>
元素,因为你会得到你引用的错误。
有办法解决这个问题吗?
删除<permission>
元素。以下任一项:
QUERY_ALL_PACKAGES
,<queries>
元素确定所需访问权限的范围(请参阅this blog post中的“漏洞#1”),或https://stackoverflow.com/questions/70080754
复制相似问题