2010-07-27 13 views
6

Chcę sprawdzić, czy moja aplikacja jest ustawiona jako domyślna aplikacja dla Intencji, którą zajmuję w mojej aplikacji.Jak sprawdzić, czy moja aplikacja jest ustawiona domyślnie, czy nie w systemie Android?

Jako przykład dla więcej niż jednej aplikacji można otworzyć określony format pliku. Muszę ustawić moją aplikację jako domyślną aplikację z mojego kodu. Jak to zrobić, aby moja aplikacja była domyślna (z kodu)? Czy ktoś może mi pomóc?

Przynajmniej chciałbym to sprawdzić podczas uruchamiania mojej aplikacji i przekierować użytkownika, aby wprowadził pewne informacje, jeśli moja aplikacja nie jest ustawiona jako domyślna na urządzeniu.

+0

Proszę określić, co masz na myśli przez "jest ustawieniem domyślnym". – CommonsWare

+1

Czy masz na myśli, że masz zainstalowane dwie różne aplikacje obsługujące tę samą aktywność? Wbudowane "wiadomości" i "Handcent SMS" do obsługi krótkich wiadomości tekstowych? Jeśli użytkownik ustawił domyślną aplikację - chcesz się dowiedzieć, czy jest ona Twoja, czy nie? Czy zrozumiałem twoje pytanie poprawnie? –

+0

Pobieram plik ics z mojej aplikacji. Kolejna aplikacja potrafi także pobrać plik ics. Gdy użytkownik spróbuje otworzyć plik, urządzenie z systemem Android wyświetli listę możliwych aplikacji do wykonania. Kiedy użytkownik wybierze moją aplikację, aby otworzyć plik ics w tym czasie, otrzymam informacje od użytkownika (o użytkowniku). Jeśli wybiorą moją aplikację jako domyślną, nie będę pytał o szczegóły użytkownika. Do tego potrzebuję sprawdzenia, czy moja aplikacja jest aplikacją domyślną. Jeśli jest domyślna, otworzę plik bezpośrednio, w przeciwnym razie chcę uzyskać szczegóły o użytkowniku. – SRS

Odpowiedz

3

O ile mi wiadomo, nie jest to możliwe. Dialog ten jest obsługiwany przez system - Twoja aplikacja zostanie uruchomiona tylko wtedy, gdy użytkownik wybierze aplikację z listy.

Dopuszczenie takiego zachowania wpłynęłoby na zdolność użytkownika do kontrolowania jego domyślnych aplikacji, a z technicznego punktu widzenia oznaczałoby proces, a jego pamięć musiałaby zostać przydzielona do każdej aplikacji na liście za każdym razem, gdy taka lista się pojawiła. .

0

Można użyć tej metody:

public static boolean isOurAppDefault(Context context) { 
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com")); 
    ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(browserIntent,PackageManager.MATCH_DEFAULT_ONLY); 
    String defaultBrowserPkg = null; 
    if (resolveInfo != null) { 
     if (resolveInfo.activityInfo != null) { 
      defaultBrowserPkg = resolveInfo.activityInfo.packageName; 
     } 
    } 
    return TextUtils.equals(context.getPackageName(), defaultBrowserPkg); 
} 

To jest rzeczywisty jakiegoś edytora lub przeglądarkę. W innym przypadku użyj różnych danych Uri dla celów.

Powiązane problemy