我有一个.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
抛出需要处理的。只需按以下步骤用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;