public void startWebBrowser(Context context, String url) {
final Intent intent =new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(url));
final ComponentName componentName = resolveComponent(context, intent);
if (componentName !=null) {
Log.d("componentName==>", componentName.getClassName());
// ToastUtil.show(componentName.getClassName());
context.startActivity(Intent.createChooser(intent, "选择浏览器"));
}else {
Log.d("componentName==>", "连接错误或没有浏览器--跳转本地webview");
Uri uri = Uri.parse(url);
Intent intent2 =new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent2);
// ToastUtil.show("没有浏览器");
// BrowserActivity.start(getActivity_(), url);
}
}
private ComponentNameresolveComponent(Context context, Intent intent) {
// final ComponentName componentName = intent.resolveActivity(context.getPackageManager());
PackageManager pm = context.getPackageManager();
ResolveInfo ri = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (ri !=null) {
return new ComponentName(
ri.activityInfo.applicationInfo.packageName, ri.activityInfo.name);
}
return null;
}
正常浏览器: com.android.browser oneplus的是com.heytap.browser 所以onplus手机上面就直接是 component 的名字打开就行