本文参照自: http://blog.csdn.net/liws2010/article/details/7452957

一、 启动android默认浏览器
在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接。关于Intent的更多内容请参考《 常用Intent 》
示例1
        Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri content_url = Uri.parse("http://www.163.com");intent.setData(content_url);startActivity(intent);
这样子,android就可以调用起手机默认的浏览器访问。
二、启动指定浏览器
在Android程序中我们可以通过发送显式Intent来启动指定的浏览器。
启动Android原生浏览器
示例2
         Intent intent = new Intent();        intent.setAction("android.intent.action.VIEW");    Uri content_url = Uri.parse("http://www.163.com");   intent.setData(content_url);           intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");   startActivity(intent);
只要修改以 intent.setClassName(" com.android.browser "," com.android.browser.BrowserActivity ");
中相应的应用程序 packagename  和要启动的 activity 即可启动其他浏览器来
uc浏览器" : " com.uc.browser ", " com.uc.browser.ActivityUpdate “
opera浏览器 :" com.opera.mini.android ", " com.opera.mini.android.Browser "
qq浏览器 :" com.tencent.mtt ", " com.tencent.mtt.MainActivity "

三、使用浏览器打开本地html文件
打开本地的html文件的时候,一定要指定某个浏览器,而不能采用方式一来浏览。
示例3
         Intent intent = new Intent();        intent.setAction("android.intent.action.VIEW");    Uri content_url = Uri.parse("file:///sdcard/robin.hu/help.html");   intent.setData(content_url);           intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");   startActivity(intent);

虽然网上很多文章说即使使用 浏览器 打开本地的html文件的时 ,文件路径不支持"files:",不应该使用

Uri.parse("file:///sdcard/robin.hu/help.html"); 

这种形式而是应该使用

Uri content_url = Uri.parse("content://com.android.htmlfileprovider/sdcard/robin.hu/help.html");

但是 经过在HTC G10(Android2.3.5),Lenovo P770(Android4.0以上)测试,实际上只 有

Uri.parse("file:///sdcard/robin.hu/help.html");

这种形式 能很好的工作。

Uri content_url = Uri.parse("content://com.android.htmlfileprovider/sdcard/robin.hu/help.html");
这种形式反而不能很好的工作
四、对使用浏览器打开网页的封装
以下是 对使用浏览器打开网页的一些封装
    static void startBrower(Context context,String uri){startBrower(context,Uri.parse(uri));}static void startBrower(Context context,Uri uri){Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");/*其实可以不用添加该Category*/intent.addCategory("android.intent.category.BROWSABLE");intent.setData(uri); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);/*如果想用浏览器打开本地html文件的话,则只能通过显式intent启动浏览器*/boolean explicitMode=false;String scheme=uri.getScheme();if(scheme!=null&&scheme.startsWith("file")) {explicitMode=true;}if(explicitMode) {intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");} else {intent.addCategory("android.intent.category.BROWSABLE");}context.startActivity(intent);}static void startBrower(Context context,String uri,String packageName, String className){startBrower(context,Uri.parse(uri),packageName,className);}static void startBrower(Context context,Uri uri,String packageName, String className){Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");intent.setData(uri); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setClassName(packageName,className);context.startActivity(intent);}
五、Android原生浏览器的AndroidManifest.xml
以下是 Android 4.0原生浏览器的 AndroidManifest.xml 文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.browser"><original-package android:name="com.android.browser" /><permission android:name="com.android.browser.permission.PRELOAD"android:label="@string/permission_preload_label"android:protectionLevel="signatureOrSystem" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.GET_ACCOUNTS"/><uses-permission android:name="android.permission.USE_CREDENTIALS"/><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.NFC" /><uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" /><uses-permission android:name="android.permission.SET_WALLPAPER" /><uses-permission android:name="android.permission.WAKE_LOCK"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /><uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /><uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/><uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/><application   android:name="Browser"android:label="@string/application_name"android:icon="@mipmap/ic_launcher_browser"android:backupAgent=".BrowserBackupAgent"android:hardwareAccelerated="true"android:taskAffinity="android.task.browser" ><provider android:name=".provider.BrowserProvider2"android:authorities="com.android.browser;browser"android:multiprocess="true"android:readPermission="com.android.browser.permission.READ_HISTORY_BOOKMARKS"android:writePermission="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"><path-permission android:path="/bookmarks/search_suggest_query"android:readPermission="android.permission.GLOBAL_SEARCH" /></provider><activity android:name="BrowserActivity"android:label="@string/application_name"android:launchMode="singleTask"android:alwaysRetainTaskState="true"android:configChanges="orientation|keyboardHidden|keyboard|screenSize"android:theme="@style/BrowserTheme"android:windowSoftInputMode="adjustResize" ><intent-filter><action android:name="android.speech.action.VOICE_SEARCH_RESULTS" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><!-- For these schemes were not particular MIME type has beensupplied, we are a good candidate. --><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="http" /><data android:scheme="https" /><data android:scheme="about" /><data android:scheme="javascript" /></intent-filter><!--  For these schemes where any of these particular MIME typeshave been supplied, we are a good candidate. --><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" /><data android:scheme="http" /><data android:scheme="https" /><data android:scheme="inline" /><data android:mimeType="text/html"/><data android:mimeType="text/plain"/><data android:mimeType="application/xhtml+xml"/><data android:mimeType="application/vnd.wap.xhtml+xml"/></intent-filter><!-- For viewing saved web archives. --><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" /><data android:scheme="http" /><data android:scheme="https" /><data android:scheme="file" /><data android:mimeType="application/x-webarchive-xml"/></intent-filter><!-- Accept inbound NFC URLs at a low priority --><intent-filter android:priority="-101"><action android:name="android.nfc.action.NDEF_DISCOVERED" /><category android:name="android.intent.category.DEFAULT" /><data android:scheme="http" /><data android:scheme="https" /></intent-filter><!-- We are also the main entry point of the browser. --><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.LAUNCHER" /><category android:name="android.intent.category.BROWSABLE" /></intent-filter><!-- The maps app is a much better experience, so it's notworth having this at all... especially for a demo!<intent-filter android:label="Map In Browser"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="vnd.android.cursor.item/postal-address" /></intent-filter>--><intent-filter><action android:name="android.intent.action.WEB_SEARCH" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="" /><data android:scheme="http" /><data android:scheme="https" /></intent-filter><intent-filter><action android:name="android.intent.action.MEDIA_SEARCH" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><intent-filter><action android:name="android.intent.action.SEARCH" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><meta-data android:name="android.app.searchable"android:resource="@xml/searchable" /></activity><activity android:name="ShortcutActivity"android:theme="@style/ShortcutTheme"android:label="@string/shortcut_bookmark"android:icon="@mipmap/ic_launcher_shortcut_browser_bookmark"><intent-filter><action android:name="android.intent.action.CREATE_SHORTCUT" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity><activity android:name="BrowserPreferencesPage" android:label="@string/menu_preferences"><intent-filter><action android:name="android.intent.action.MANAGE_NETWORK_USAGE" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity><activity android:name="BookmarkSearch"android:label="@string/bookmarks_search"android:stateNotNeeded="true"android:theme="@android:style/Theme.NoDisplay"android:excludeFromRecents="true"><intent-filter><action android:name="android.intent.action.SEARCH" /><category android:name="android.intent.category.DEFAULT" /></intent-filter><meta-data android:name="android.app.searchable"android:resource="@xml/bookmarks_searchable" /></activity><activity android:name="AddBookmarkPage" android:label="Save bookmark"android:theme="@style/DialogWhenLarge"android:configChanges="orientation|keyboardHidden|screenSize"><intent-filter><action android:name="android.intent.action.INSERT" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="vnd.android.cursor.dir/bookmark"/></intent-filter></activity><activity android:name="ComboViewActivity"></activity><!-- Bookmark thumbnail homescreen widget --><receiverandroid:name=".widget.BookmarkThumbnailWidgetProvider"android:label="@string/bookmarks"><intent-filter><actionandroid:name="android.appwidget.action.APPWIDGET_UPDATE" /><actionandroid:name="com.android.browser.BOOKMARK_APPWIDGET_UPDATE" /></intent-filter><meta-dataandroid:name="android.appwidget.provider"android:resource="@xml/bookmarkthumbnailwidget_info" /></receiver><serviceandroid:name=".widget.BookmarkThumbnailWidgetService"android:permission="android.permission.BIND_REMOTEVIEWS"android:exported="false" /><receiverandroid:name=".widget.BookmarkWidgetProxy"android:exported="false" /><activity android:name=".widget.BookmarkWidgetConfigure"android:theme="@android:style/Theme.Holo.DialogWhenLarge"><intent-filter><action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/></intent-filter></activity><!-- Makes .BrowserActivity the search target for any activity in Browser --><meta-data android:name="android.app.default_searchable" android:value=".BrowserActivity" /><!-- Application code for RLZ tracking.  RLZ assigns non-unique, non-personally identifiabletracking labels to client products; these labels sometimes appear in Google searchqueries.  See http://code.google.com/p/rlz for more info.This value signifies to the RLZ client that this application uses RLZ tracking. --><meta-data android:name="com.google.android.partnersetup.RLZ_ACCESS_POINT"android:value="@string/rlz_access_point" /><receiver android:name=".OpenDownloadReceiver"><intent-filter><action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/></intent-filter></receiver><!-- For custom home pages (like most visited) --><providerandroid:name=".homepages.HomeProvider"android:authorities="com.android.browser.home"android:readPermission="com.android.browser.permission.READ_HISTORY_BOOKMARKS"android:exported="false" /><receiver android:name=".AccountsChangedReceiver"><intent-filter><action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" /></intent-filter></receiver><receiver android:name=".PreloadRequestReceiver"android:permission="com.android.browser.permission.PRELOAD" ><intent-filter><action android:name="android.intent.action.PRELOAD"/><data android:scheme="http" /></intent-filter></receiver><provider android:name=".provider.SnapshotProvider"android:authorities="com.android.browser.snapshots"android:exported="false" /></application>
</manifest>

转载自: http://blog.csdn.net/hudashi/article/details/8176298

android 如何启动浏览器相关推荐

  1. iOS/Android 微信及浏览器中唤起本地APP

    title: iOS/Android 微信及浏览器中唤起本地APP date: 2017-05-10 10:19:20 tags: 需求概述 分享应用活动链接已经成为手机应用一个非常重要的推广传播形式 ...

  2. Android实现通过浏览器点击链接打开本地应用(APP)

    Android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据 今天老大给我提了一个需求叫我调研一下,他已经测试了iOS平台上是可以的,需求很简单就是在系统浏览器中通过输入一个uri ...

  3. android adb开启服务,android adb 启动activity、service,发送broadcast等操作

    android adb 启动activity.service,发送broadcast等操作 图片发自简书App 一.adb启动activity: adb shellam start -n {包(pac ...

  4. [转]Android 和 iPhone 浏览器之战,第 2 部分: 为 iPhone 和 Android 构建基于浏览器的应用程序...

    简介: 本文是共两部分的系列文章 "Android 和 iPhone 浏览器之战" 的第 2 部分,主要关注为 iPhone 和 Android 开发基于浏览器的应用程序.在第 1 ...

  5. android之启动桌面activity

    主页面布局:layout\activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...

  6. Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案

    Android Studio 启动模拟器出现"Timed out after 300seconds waiting for emulator to come online"解决方案 ...

  7. Windows自带Android模拟器启动失败

    Windows自带Android模拟器启动失败 错误信息:[Critical] XDE Exit Code: InvalidArguments (3) XDE执行的第三个参数为设置内存值,形式为/me ...

  8. 【Android 逆向】加壳的 Android 应用启动流程 | 使用反射替换 LoadedApk 中的类加载器流程

    文章目录 一.加壳的 Android 应用启动流程 二.使用反射替换 LoadedApk 中的类加载器流程 一.加壳的 Android 应用启动流程 加壳的 Android 应用启动流程 : 加壳的 ...

  9. 【Android 逆向】Android 进程简介 ( Android 应用启动流程 )

    文章目录 前言 一.Android 进程 二.Android 应用启动流程 前言 参考 [Android 逆向]Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_a ...

最新文章

  1. 顶级数据库管理系统的性能比较研究(论文翻译)
  2. 【面试必备】javascript的原型和继承
  3. 1038 Recover the Smallest Number (30 分)【难度: 中 / 知识点: 贪心 思维】
  4. spring和spring_Spring WebApplicationInitializer和ApplicationContextInitializer的混淆
  5. trigger_name 的命名规范
  6. 函数名、闭包及迭代器
  7. 企业常用的RPC框架比较
  8. 从零开始搭建“表情包小程序”
  9. 软考高项之项目变更管理
  10. 商淘多b2b2c商城系统怎么在个人电脑上安装_真正开源免费可商用的电子商务系统...
  11. js实现显示系统时间的表盘
  12. java excel 列_java实现excel行列转换
  13. Cubase Pro 12 v12.0.0 Full R2R WiN 音乐制作软件完整版
  14. 百家号怎么发送链接,发送自己的链接变成文字等解答
  15. 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码
  16. AI+MR遇冷后回暖,国内公司抢先卡位仍有风险待解
  17. 数字信号处理第一课(转)
  18. iOS应用上传个人头像
  19. python launcher卸载后蓝屏_大毒瘤!卸载WeGame解决XPS 15蓝屏问题
  20. 【持续更新】java多线程面试题整理

热门文章

  1. 智慧水务之营业收费系统介绍
  2. 《统计学》黄良文—思维导图
  3. jQuery仿苏宁易购导航
  4. 北大毕业的山区小学校长,给清华老朋友派了一个紧急任务
  5. Openstack七大组件介绍
  6. python2.7 32位下载_PyCrypto py2.7下载
  7. 查出每个部门的工资前三的员工信息
  8. 区块链产品溯源技术应用落地
  9. Linux 安装git、配置git账号
  10. 柔性机械臂_德国Festo(费斯托)公布新作:模仿人手制造的柔性机械手