Запустить намерение браузера с помощью пользовательского класса - не удается найти активность - PullRequest
9 голосов
/ 25 июля 2010

Я хочу специально запустить браузер 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.

Ответы [ 3 ]

6 голосов
/ 16 августа 2010

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

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

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

6 голосов
/ 25 июля 2010

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

Вам нужно сделать так:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("http://www.google.com");
intent.setData(data);
startActivity(intent);
1 голос
/ 26 июля 2010

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

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

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

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

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

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

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

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

...