Sprawdzanie czy istnieje Aktywność mogąca obsłużyć konkretną Intencję | android4devs


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);


1
komentarz

Przewijanie do góry