2012-04-26 27 views
6

Mam telefon z Androidem z zainstalowanymi wieloma przeglądarkami i mogę lub nie ustawić domyślnej przeglądarki.Otwórz rodzimą przeglądarkę z aplikacji na Androida

Więc moje pytanie brzmi ..

  1. Z mojego App Jak mogę zmusić otworzyć łącze tylko w NATIVE android przeglądarce?
  2. Czy istnieje sposób, aby dowiedzieć się, czy jest domyślnie ustawiona przeglądarka czy nie?

Odpowiedz

6

Z mojego App Jak mogę zmusić otworzyć łącze tylko w rodzimym android przeglądarce?

Intent intent = new Intent(); 
ComponentName comp = new ComponentName("com.google.android.browser","com.google.android.browser.BrowserActivity"); 
intent.setComponent(comp); 
intent.setAction("android.intent.action.VIEW"); 
intent.addCategory("android.intent.category.BROWSABLE"); 
Uri uri = Uri.parse(url); 
intent.setData(uri); 
try 
{ 
    startActivity(intent); 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 

Czy istnieje sposób mogę wiedzieć, czy jest ustawiony domyślnie przeglądarka czy nie?

PackageManager packageManager = getPackageManager(); 

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("URL")); 

List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0); 

if (list.size() > 0) { 
    for (ResolveInfo resolveInfo : list) { 
     resolveInfo.isDefault();// will let u know if the app is set to default 
    } 

} else { 
    //No apps available 
} 
+0

Świetnie! to działa.Dzięki Prabhu :) – defactodeity

+1

Powyższy kod nie zidentyfikował domyślnej przeglądarki. Na moim urządzeniu ustawiam Operę jako domyślną przeglądarkę, ale kiedy uruchomię ten kod, nie widzę "resolveInfo.isDefault" jest zawsze prawdziwe dla każdej przeglądarki! Proszę pomóż. – defactodeity

1

Spróbuj czegoś takiego.

try { 
     Intent i = new Intent(); 
     ComponentName comp = new ComponentName("com.google.android.browser","com.google.android.browser.BrowserActivity"); 
     i.setComponent(comp); 
     i.setAction("android.intent.action.VIEW"); 
     i.addCategory("android.intent.category.BROWSABLE"); 
     ContentURI uri = new ContentURI(url); 
     i.setData(uri); 
     startActivityForResult(i, 2); 
     } catch (URISyntaxException e) { 
         e.printStackTrace(); 
     } 

za drugie pytanie możesz użyć PackageManager.

uzyskać instancję PackageManager

PackageManager packageManager = getPackageManager(); 

i zapytać go do określonego działania, danych i kategorii Intent.

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("URL")); 

List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0); 

    for (ResolveInfo resolveInfo : list) { 

     if(resolveInfo.isDefault()) 
     { 
     //default browser 
     } 
    } 
+0

dziękuję @ N-JOY Poniższy kod odpowiedział na pierwsze pytanie. 'Intencja ii = nowy zamiar(); ComponentName comp = new Nazwa komponentu ("com.android.browser", "com.android.browser.BrowserActivity"); ii.setComponent (comp); ii.setAction ("android.intent.action.VIEW"); ii.addCategory ("android.intent.category.BROWSABLE"); ii.setData (Uri.parse ("http://www.google.com")); StartActivity (ii); ' W drugiej części pytania, ** Czy istnieje sposób sprawdzenia, czy w telefonie jest ustawiona domyślna przeglądarka? ** – defactodeity

+0

i zaktualizowałem moją odpowiedź na drugie pytanie. –

+0

Ustawiłem przeglądarkę domyślnie, ale 'resolveInfo.isDefault' wydaje się nie działać. – defactodeity

1

Wreszcie zdobione. resolveActivity współpracuje z MATCH_DEFAULT_ONLY flagą na przykład PackageManager ..

4

Trzeba dokonać następujących za nazwanie rodzimej Browser

intent.setComponent(new  
    componentName("com.android.browser","com.android.browser.BrowserActivity"));