【问题标题】:getApplicationEnabledSetting(pkgName) got NullPointException errorgetApplicationEnabledSetting(pkgName) 得到 NullPointException 错误
【发布时间】: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


【解决方案1】:

mContext 可能是 null,因此 mContext.getPackageManager() 可能会抛出 NPE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2011-09-21
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多