Java PackageManager.NameNotFoundException
我有一个Java PackageManager.NameNotFoundException,java,android,Java,Android,我有一个.java文件: .... import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; .... /* PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(),0);
.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
。为了清楚起见,我在另一个文件中使用了这段代码,它没有导致错误;因此,不必担心包名。现在,这个错误背后的原因是什么?还附加了一个图像以澄清错误
为了解决这个问题,我还尝试了以下方法:
this.getPackageManager()
,getBaseContext().getPackageManager()
和getApplicationContext().getPackageManager()
;但这一切都是徒劳的 pm.getPackageInfo
抛出需要处理的PackageManager.NameNotFoundException
。只需用try-catch将其包装如下:
final PackageManager pm = getPackageManager();
final String pn = getPackageName();
PackageInfo pi = null;
try {
pi = pm.getPackageInfo(pn, 0);
} catch (NameNotFoundException e) {
//LOG the exception
}
curVersionCode = pi!=null ? pi.versionCode:-1;
这是一个选中的异常-请阅读源代码文档:
如果在系统上找不到具有给定名称的包,则抛出{@link name notfoundexception}。
-我怀疑您已经在try/catch块中找到了其他代码。是的,您是对的。另一个代码是try/catch。非常感谢你。