5

mam metodę, która rozwiązuje zamiarem jest componentName:Dlaczego Activity.getPackageManager() zwraca wartość null

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

Rzadko pojawia się następujący Acra zgłoszenie awarii:

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) 

To linia klasa Intent pobiera NPE, ponieważ PackageManager to null.

Widzę to rzadko, ale dość często, że zmusiłem mnie do napisania tego pytania.

Ktoś ma jakiś pomysł, w jakich okolicznościach Context/Activity.getPackageManager() zwróci wartość null? W moim przypadku, context jest sam obiekt Activity, a nie ApplicationContext. W takim przypadku aplikacja wykonuje metodę cyklu życia Activity.onResume().

+0

Twój kontekst nie jest na pewno pusty? –

+0

Jeśli tak, to czy otrzymam ślad stosu? Więc nie, kontekst nie może być pusty. –

+0

Poza tym, nazywam to rozwiązaniemViewExternalIntent (this), gdzie "this" jest działaniem, więc niemożliwe jest, aby było puste. –

Odpowiedz

0

Nie określono intencji z zamierzonym działaniem lub wyraźnym zamiarem. Możesz spróbować:

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

, a następnie zadzwonić do menedżera pakietów, aby sprawdzić, czy te aplikacje lub funkcje są dostępne na Twoim urządzeniu.