android 呼叫系統瀏覽器
方法一:
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory(Intent.CATEGORY_BROWSABLE);
Uri contentUri = Uri.parse(url);
intent.setData(contentUri);
intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"));
context.startActivity(intent);
注意:有的手機應用商修改了手機系統瀏覽器的包名(親測三星 SM-G9250包名是com.sec.android.app.sbrowser)所以此方法會出現android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.browser/com.android.browser.BrowserActivity}; have you declared this activity in your AndroidManifest.xml?的報錯資訊,所以推薦方法二
方法二:
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory(Intent.CATEGORY_BROWSABLE);
Uri contentUri = Uri.parse(url);
intent.setData(contentUri);
if(hasbrowser(content,intent)){
intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity"));
context.startActivity(intent);
public boolean hasbrowser(Context context, Intent intent) {
PackageManager pm = context.getPackageManager();
List<ResolveInfo> list=pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolve:list) {
if (resolve.activityInfo.packageName.contains("com.android.browser")){
return true;
}
}
return false;
}