Lipiec 23, 2011
Intent Snippety
Przykład metody, która pozwoli nam sprawdzić, czy urządzenie posiada aplikacją (Aktywność) pozwalającą na obsłużenie konkretnej Intencji.
Poniższy kod może być przydatny szczególnie wtedy, gdy nasza aplikacja wysyła Intencje, do obsłużenia których potrzebne są aplikacje niedostarczone domyślnie z systemem. Pozwala on na uniknięcie wyjątku:
android.content.ActivityNotFoundException: No Activity found to handle Intent
Oto efekt działania powyższego kodu dla wywołania Intencji:
Aplikacja była uruchamiana na emulatorze, który nie posiada domyślnie zainstalowanych Map Google (ani żadnego programu, który obsługuje adres URI lokalizacji – geo:).
[…] Sprawdzanie czy istnieje Aktywność mogąca obsłużyć konkretną Intencję […]
Zaloguj się lub skorzystaj z profilu:
Możesz również zostawić komentarz bez rejestracji, korzystając z poniższego formularza:
Musisz być zalogowany aby móc pisać komentarze.
Sprawdzanie czy istnieje Aktywność mogąca obsłużyć konkretną Intencję
Efekt działania
Komentarze (1)
Prześlij komentarz
private void startActivityOrWarn(Intent intent) {
if(isIntentActivityAvailable(intent)) {
startActivity(intent);
} else {
showUnavailabilityInfo();
}
}
private boolean isIntentActivityAvailable(Intent intent) {
Context context = getApplicationContext();
PackageManager pm = context.getPackageManager();
List<ResolveInfo> resolveInfoList = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return resolveInfoList.size() > 0;
}
private void showUnavailabilityInfo() {
Toast.makeText(getApplicationContext(),
"Your system hasn't necessary application for this intent",
Toast.LENGTH_LONG)
.show();
}Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:50.07,19.97"));
startActivityOrWarn(intent);
25 lipca 2011 o 16:43