Вопрос по android, android-intent, browser, mobile-browser – Откройте родной браузер из приложения для Android

8

У меня есть телефон Android с несколькими установленными браузерами, и я могу установить или не установить браузер по умолчанию.

Итак, мой вопрос ..

From my App, How do I force open a link only in the NATIVE android browser? Is there a way I can know if there is a browser set to default or not?

Ваш Ответ

5   ответов
1

resolActivity работает с флагом MATCH_DEFAULT_ONLY в экземпляре PackageManager.

6

browser?

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

Is there a way I can know if there is a browser set to default or not?

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
}
Приведенный выше код не смог определить браузер по умолчанию. На моем устройстве я установил Opera в качестве браузера по умолчанию, но когда я запускаю этот код, я не вижуresolveInfo.isDefault всегда актуально для любого браузера! Пожалуйста помоги. defactodeity
Большой! это работает. Спасибо прабху :) defactodeity
5

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

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

для вашего второго вопроса вы можете использоватьPackageManager.

получить экземплярPackageManager

PackageManager packageManager = getPackageManager(); 

и запросить его для конкретного действия, данных и категории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
         }
    }
Большое спасибо @ N-JOY Следующий код ответил на первый вопрос.Intent ii = new Intent(); ComponentName comp = new ComponentName("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);   Для второй части вопроса,Is there a way to know if there's a default browser set on the phone? defactodeity
Я обновил свой ответ на ваш второй вопрос.
Я установил браузер по умолчанию, ноresolveInfo.isDefault похоже, не работает. defactodeity
0

в то время как имя пакета отличается в зависимости от производителя. Пожалуйста, обратитесь к этому ответу, желаю, чтобы это помогло.

https://stackoverflow.com/a/14723703/1083128

Похожие вопросы