【发布时间】:2013-06-27 05:15:18
【问题描述】:
当我在 Intellij IDE(Android Studio) 中使用这些方法时,我得到了这些信息:
方法调用mContext.getPackageManager().getApplicationEnabledSetting(pkgName) 可能会产生java.lang.NullPointerException 更少... (Ctrl+F1)
此检查报告指定检查范围内始终为真或假的条件,并根据代码的数据流分析指出可能引发 RuntimeException 的位置。此检查还报告 Nullable/NotNull 合同违规。可以配置支持合约的注解(默认使用annotations.jar中的@Nullable/@NotNull注解)
但只有 dev api 中描述的 IllegalArgumentException
问题是:什么条件下我会得到NULLPOINTEXCEPTION?
我有一个简单的测试示例应用程序,只需在 create() 上使用这些方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int testint= this.getPackageManager().getApplicationEnabledSetting("com.android.mms");//NullPointException
}
发生了不幸的 NullPointException。包名是Message App,不是原创 谷歌的应用程序,修改。 谢谢
【问题讨论】:
-
null 引用mContext.getPackageManager()
-
不,我确定是 getApplicationEnabledSetting(String packagename)
-
PackageManager pm = context.getPackageManager(); int temp = pm.getApplicationEnabledSetting(pkgName);//消息到了,pkgname也肯定不为空
-
pm 可能为空,所以 pm.get.. 会抛出空指针异常。
标签: android android-package-managers