首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NameNotFoundException在Android 11上调用getPackageInfo时

NameNotFoundException在Android 11上调用getPackageInfo时
EN

Stack Overflow用户
提问于 2020-06-12 13:59:51
回答 2查看 17.5K关注 0票数 33

在将targetSdkVersion设置为30 (Android11)之后,在我知道存在的包上执行packageManager.getPackageInfo(packageName, PackageManager.GET_PERMISSIONS)时,将得到android.content.pm.PackageManager$NameNotFoundException

堆栈跟踪如下:

代码语言:javascript
运行
复制
android.content.pm.PackageManager$NameNotFoundException: com.google.android.apps.maps
        at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:202)
        at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:174)
EN

Stack Overflow用户

回答已采纳

发布于 2020-06-12 13:59:51

https://developer.android.com/preview/privacy/package-visibility中所述

安卓11改变了应用程序与用户在设备上安装的其他应用程序的查询和交互方式。使用新元素,应用程序可以定义它们可以访问的其他应用程序集。这个元素通过告诉系统哪些其他应用程序对你的应用程序可见,并帮助像谷歌这样的应用商店评估你的应用程序为用户提供的隐私和安全性,这有助于鼓励最低特权原则。

如果您的应用程序以Android 11为目标,您可能需要在应用程序的清单文件中添加元素。在元素中,可以通过包名或意图签名来指定应用程序。

因此,您要么停止所做的操作,要么请求访问有关某些包的信息,或者--如果您有理由--使用权限QUERY_ALL_PACKAGES

查询和与特定包交互

要查询特定包并与其进行交互,您可以如下所示更新AndroidManifest.xml

代码语言:javascript
运行
复制
<manifest ...>
    ...
    <queries>
        <package android:name="com.example.store" />
        <package android:name="com.example.services" />
    </queries>
    ...
     <application ...>
    ...
</manifest>

查询和与所有应用程序交互

我有一个应用程序,需要能够要求所有应用的信息。您所要做的就是向AndroidManifest.xml添加以下内容

代码语言:javascript
运行
复制
<manifest ...>
     ...
     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
     ...
     <application ...>
     ...
</manifest>
票数 74
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62345805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档