1. 程式人生 > >android 呼叫系統瀏覽器

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;
}