gpt4 book ai didi

java - PackageManager.NameNotFoundException 异常

转载 作者:搜寻专家 更新时间:2023-11-01 09:25:45 28 4
gpt4 key购买 nike

我有一个 .java 文件:

 ....

import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

....

/* PackageInfo packageInfo =
getPackageManager().getPackageInfo(getPackageName(),0);
curVersionCode = packageInfo.versionCode;*/

PackageManager pm = getPackageManager();
String pn = getPackageName();
PackageInfo pi = pm.getPackageInfo(pn,0);
curVersionCode = pi.versionCode;

....

为了理解错误,我将代码分为四行。如您所见,两行代码在注释中。现在,此代码不起作用,并在我尝试构建时在此处给出错误 PackageManager.NameNotFoundException。为清楚起见,我在不同的文件中使用了这段代码,它在那里没有引起任何错误;所以不需要担心包名。现在这个错误背后的原因是什么?还附上一张图片以明确错误。

enter image description here

为了解决这个问题,我也尝试了这些:this.getPackageManager()getBaseContext().getPackageManager()getApplicationContext().getPackageManager( );但这一切都是徒劳的。

最佳答案

最初回答 here

Android API 级别 30 中存在一项行为更改,因此即使在用户设备上安装了应用程序/软件包应用程序,我们在 Android 11 上调用 getPackageInfo 时也会收到 NameNotFoundException。从 Android API 30 开始,我们需要在 list 中指定包名称,以检查用户设备上是否安装了该包。

例如,在检查用户设备上是否安装了 youtube 应用程序之前,我们需要在应用程序 list 文件中指定 Youtube 包,

<?xml version="1.0" encoding="utf-8"?>
<manifest
...>
<queries>
<package android:name="com.google.android.youtube" />
</queries>

<application
android:name=".Notes App"
.../>

</manifest>

关于java - PackageManager.NameNotFoundException 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50807771/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com