5

devo metodo che risolve l'intento di un ComponentName:Perché sarebbe Activity.getPackageManager() ritorna null

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

Raramente, ottengo il seguente relazione crash 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) 

Quella linea in la classe Intent ottiene l'NPE perché PackageManager è null.

Questo lo vedo raramente, ma abbastanza frequentemente da farmi scrivere questa domanda.

Qualcuno ha qualche idea, in quali circostanze Context/Activity.getPackageManager() restituisce null? Nel mio caso, context è l'oggetto Activity stesso, non il ApplicationContext. L'app sta eseguendo il metodo del ciclo di vita Activity.onResume() quando ciò accade.

+0

Il tuo contesto non è nullo di sicuro? –

+0

Se lo fosse, otterrei quella traccia dello stack? Quindi, no, il contesto non può essere nullo. –

+0

Inoltre, chiamo this resolveViewExternalIntent (this) dove 'this' è l'Activity, quindi è impossibile che sia null. –

risposta

0

Non è stata specificata l'intenzione con un'azione intentata o esplicita. Si può provare questo:

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

e quindi chiamare il gestore di pacchetti per controllare che tali applicazioni o funzionalità sono disponibili sul dispositivo.

Problemi correlati