Намерение Браузера запуска с Пользовательским Классом - не может найти Действие

Я хочу конкретно выполнить браузер Android по умолчанию для данного URL. Я использую этот код:

Intent i = new Intent();
i.setAction("android.intent.action.VIEW"); 
i.addCategory("android.intent.category.BROWSABLE");
i.setClassName("com.google.android.browser", "com.android.browser.BrowserActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setData(Uri.parse(url));
startActivity(i);

Ошибка, которую я получаю:

Unable to find explicit activity class {
com.google.android.browser/com.android.browser.BrowserActivity}; 
have you declared this activity in your AndroidManifest.xml?

Я также пытался фильтровать намерения пакетом:

i.setPackage("com.google.android.browser");

вместо setClassName, но напрасно:

No Activity found to handle Intent { act=android.intent.action.VIEW 
cat=[android.intent.category.BROWSABLE] 
dat=http://www.google.com/ flg=0x10000000 pkg=android }

Я также пытался добавить <uses-library android:name="com.google.android.browser" /> к декларации.

Я пропускаю что-то здесь?

PS: я не интересуюсь использованием startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))) поскольку это перечислит весь выбор для просмотра Intent.

9
задан the_void 3 August 2010 в 14:20
поделиться

3 ответа

Я использую это, все в порядке.

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

Думаю, вы знаете, в чем дело. :)

6
ответ дан 4 December 2019 в 15:11
поделиться

Обратите внимание, что браузер по умолчанию может быть переопределен , и это не всегда встроенное приложение браузера, это может быть, например, Opera Mini.

Сделать нужно так:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("http://www.google.com");
intent.setData(data);
startActivity(intent);
6
ответ дан 4 December 2019 в 15:11
поделиться

Один из способов открыть URL-адрес в браузере из кода - использовать веб-просмотр.

Создайте WebViewClientClass, который расширяет WebViewClient, например:

public boolean shouldOverrideUrlLoading(WebView view, String url) {
   view.loadUrl(url);
   return true;
}

Затем создайте веб-просмотр. Установите webview.setWebViewClient (new WebViewClientClass ()); --- это небольшой обходной путь, позволяющий не использовать браузер по умолчанию.

Затем возьмите URL-адрес в тексте редактирования и установите его для загрузки браузера как:

webview.loadurl(urlfield.getText().toString());
webview.requestFocus();

Это должно загрузить веб-браузер с URL-адресом, который вы запрашивали.

Надеюсь, это поможет ... :)

1
ответ дан 4 December 2019 в 15:11
поделиться
Другие вопросы по тегам:

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