Почему Activity.getPackageManager() возвращает значение null

У меня есть метод, который разрешает 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().


person Tom anMoney    schedule 09.06.2013    source источник
comment
Ваш контекст точно не нулевой?   -  person Shobhit Puri    schedule 09.06.2013
comment
Если бы это было так, я бы получил эту трассировку стека? Итак, нет, контекст не может быть нулевым.   -  person Tom anMoney    schedule 09.06.2013
comment
Кроме того, я называю это resolveViewExternalIntent(this), где «это» — это действие, поэтому невозможно, чтобы оно было нулевым.   -  person Tom anMoney    schedule 09.06.2013


Ответы (1)


Вы не указали намерение с действием намерения или явным намерением. Вы можете попробовать это:

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

а затем позвоните диспетчеру пакетов, чтобы проверить, доступны ли эти приложения или функции на вашем устройстве.

person Omar Faroque Anik    schedule 14.04.2014