Penso che i veri problemi qui sono che si sta eseguendo l'emulatore ufficiale e il tuo intento non corrisponde a nulla.
Dal mio test, questo è un problema che si verifica quando l'URI dell'intenzione (da setData()
) non corrisponde a nulla e si sta eseguendo su uno degli emulatori Android ufficiali. Questo non sembra accadere su dispositivi reali, quindi non dovrebbe essere un problema del mondo reale.
È possibile utilizzare questo codice per rilevare quando questo sta per accadere prima di lanciare l'intento:
ComponentName emailApp = intent.resolveActivity(getPackageManager());
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback");
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction);
(. Il nome dell'attività che mostra il metodo di azione "non supportato azione" è com.android.fallback.FallbackActivity
)
Grazie, ha funzionato :) Inizialmente ho provato qualcosa del genere, ma ho appena tirato su uno schermo di messaggistica e non l'app di posta elettronica. Penso che fosse perché, al momento, non avevo un account di posta elettronica impostato nell'emulatore? – scuba
Cosa hai usato la parola chiave finale? Ciò si traduce in una sorta di ottimizzazione di cui non sono a conoscenza? – Scott
Non ho scritto lo snippet. Personalmente, probabilmente non avrei usato la parola chiave finale lì. – CommonsWare