为什么Activity.getPackageManager()会返回null?

6

我有一个方法可以将Intent解析为ComponentName:

private static ComponentName resolveViewExternalIntent(Context context)
{
    Intent intent = createIntent();
    return intent.resolveActivity(context.getPackageManager());
}

很少见到以下ACRA崩溃报告:
java.lang.NullPointerException
    at android.content.Intent.resolveActivity(Intent.java:4518)
    at com.mypackage.myclass.resolveViewExternalIntent(SourceFile:271)
    at om.mypackage.myActivity.onResume(SourceFile:517)

在Intent类中的那一行代码之所以出现NPE,是因为PackageManager为null

我偶尔会遇到这个问题,但足够频繁,让我写下这个问题。

有没有人知道,在什么情况下Context/Activity.getPackageManager()可能返回null?在我的情况下,context是Activity对象本身,而不是ApplicationContext。当这种情况发生时,应用正在执行Activity.onResume()生命周期方法。


你的上下文肯定不是 null 吗? - Shobhit Puri
如果是这样,我会得到那个堆栈跟踪吗?所以,不,上下文不能为空。 - Tom anMoney
另外,我调用了 resolveViewExternalIntent(this) 这个方法,其中的 'this' 是指Activity,因此它不可能为空。 - Tom anMoney
1个回答

0

您没有使用意图操作或明确意图来指定意图。您可以尝试这样做:

 Intent i = new Intent(Intent.ACTION_ZZZ); // Replace ZZZ

然后调用包管理器检查这些应用程序或功能是否可在您的设备上使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接