Ответ 1
Один из подходов, который вы можете попробовать, - это посмотреть PackageManager.queryIntentActivities(Intent, int)
. Этот метод дает вам информацию обо всех действиях, которые могут обрабатывать данный Intent
. Вы можете просто создать Intent
и посмотреть, что он возвращает. Если вы хотите, чтобы ваш WebView
имел приоритет, когда он мог обрабатывать URL-адрес, вы могли бы опционально обрабатывать любые результаты, которые включают активность браузера. Я не пробовал этот код, но он может выглядеть примерно так:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
List<ResolveInfo> infos = getPackageManager().queryIntentActivities(intent, 0);
if (infos.size() == 0) {
// apparently nothing can handle this URL
return false;
}
for (ResolveInfo info : infos) {
if (info.activityInfo.packageName.equals("com.android.browser")) {
view.loadUrl(url);
return true;
}
}
startActivity(intent);
return true;
}
});