android.content.pm.PackageManager$NameNotFoundException:com.android.chrome

hem*_*ddy 8 android google-chrome android-studio

我无法仅在 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()
    }
Run Code Online (Sandbox Code Playgroud)

抛出异常:android.content.pm.PackageManager$NameNotFoundException:com.android.chrome

任何帮助,将不胜感激。谢谢

hem*_*ddy 11

问题已解决.. 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>
Run Code Online (Sandbox Code Playgroud)