android - android.content.pm.PackageManager$NameNotFoundException: com.android.chrome
问题描述
我无法仅在 android 11 设备/API 30 中获取 google chrome 应用程序的包信息。让所有设备正常工作
请检查下面提到的代码。
PackageManager pm = context.getPackageManager();
try {
pi = pm.getPackageInfo("com.android.chrome", 0);
value = pi.versionName;
} catch (PackageManager.NameNotFoundException e) {
e.toString()
}
抛出异常:android.content.pm.PackageManager$NameNotFoundException:com.android.chrome
任何帮助,将不胜感激。谢谢
解决方案
问题已解决.. 引入 Android 11,Google 更新了安全策略以选择性地单独访问包,而不是获取所有包。
为此需要在清单中添加元素。
https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9
<manifest package="com.example.game">
<queries>
<package android:name="com.example.store" />
<package android:name="com.example.service" />
</queries>
</manifest>
推荐阅读
- azure-devops - 在 Azure Devops 构建管道步骤之间传递输出变量,例如 7 位 git hash
- asp.net - 添加列 EF 核心后 getAsync 时出错
- osgi - OSGi:捆绑激活
- json - 使用 jq 选择并用特殊字符替换环境变量引用的键的字段
- c - 为什么 atoi 不能正确转换为整数?
- c# - 打印将参数传递给 Process 的文档
- git - 在 Azure Devops 中回顾性地将 PBI 链接到提交
- php - 转换多维数组 (php)
- c - rcu_read_lock() 实际做了什么(Linux 内核)
- python-3.x - Pandas - 分组和累积计数,直到值发生变化