首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android程序中怎么启动浏览器

2012-11-22 
Android程序中如何启动浏览器本文参照自:http://blog.csdn.net/liws2010/article/details/7452957一、启动a

Android程序中如何启动浏览器
本文参照自:http://blog.csdn.net/liws2010/article/details/7452957一、启动android默认浏览器在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接。关于Intent的更多内容请参考《常用Intent》示例1

Intent=newIntent();.("android.intent.action.VIEW");Uri=Uri.("http://www.163.com");.();();

这样子,android就可以调用起手机默认的浏览器访问。二、启动指定浏览器在Android程序中我们可以通过发送显式Intent来启动指定的浏览器。启动Android原生浏览器示例2

Intent=newIntent();.("android.intent.action.VIEW");Uri=Uri.("http://www.163.com");.();.("com.android.browser","com.android.browser.BrowserActivity");();

只要修改以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=newIntent();.("android.intent.action.VIEW");Uri=Uri.("file:///sdcard/robin.hu/help.html");.();.("com.android.browser","com.android.browser.BrowserActivity");();

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

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

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

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

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

这种形式能很好的工作。

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

这种形式反而不能很好的工作四、对使用浏览器打开网页的封装以下是对使用浏览器打开网页的一些封装

staticvoid(Context,String){(,Uri.());}staticvoid(Context,Uri){Intent=newIntent();.("android.intent.action.VIEW");/*其实可以不用添加该Category*/.("android.intent.category.BROWSABLE");.();.(Intent.);/*如果想用浏览器打开本地html文件的话,则只能通过显式intent启动浏览器*/boolean=false;String=.();if(!=null&&.("file")){=true;}if(){.("com.android.browser","com.android.browser.BrowserActivity");}else{.("android.intent.category.BROWSABLE");}.();}staticvoid(Context,String,String,String){(,Uri.(),,);}staticvoid(Context,Uri,String,String){Intent=newIntent();.("android.intent.action.VIEW");.();.(Intent.);.(,);.();}

五、Android原生浏览器的AndroidManifest.xml以下是Android 4.0原生浏览器的AndroidManifest.xml文件

<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.android.browser"><original-packageandroid:name="com.android.browser"/><permissionandroid:name="com.android.browser.permission.PRELOAD"android:label="@string/permission_preload_label"android:protectionLevel="signatureOrSystem"/><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/><uses-permissionandroid:name="android.permission.USE_CREDENTIALS"/><uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.NFC"/><uses-permissionandroid:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"/><uses-permissionandroid:name="android.permission.SET_WALLPAPER"/><uses-permissionandroid:name="android.permission.WAKE_LOCK"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/><uses-permissionandroid:name="android.permission.READ_SYNC_SETTINGS"/><uses-permissionandroid:name="android.permission.WRITE_SYNC_SETTINGS"/><uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/><uses-permissionandroid:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/><uses-permissionandroid:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/><uses-permissionandroid:name="com.android.launcher.permission.INSTALL_SHORTCUT"/><applicationandroid:name="Browser"android:label="@string/application_name"android:icon="@mipmap/ic_launcher_browser"android:backupAgent=".BrowserBackupAgent"android:hardwareAccelerated="true"android:taskAffinity="android.task.browser"><providerandroid: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-permissionandroid:path="/bookmarks/search_suggest_query"android:readPermission="android.permission.GLOBAL_SEARCH"/></provider><activityandroid: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><actionandroid:name="android.speech.action.VOICE_SEARCH_RESULTS"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter><!-- For these schemes were not particular MIME type has been                 supplied, we are a good candidate. --><intent-filter><actionandroid:name="android.intent.action.VIEW"/><categoryandroid:name="android.intent.category.DEFAULT"/><categoryandroid:name="android.intent.category.BROWSABLE"/><dataandroid:scheme="http"/><dataandroid:scheme="https"/><dataandroid:scheme="about"/><dataandroid:scheme="javascript"/></intent-filter><!--  For these schemes where any of these particular MIME types                  have been supplied, we are a good candidate. --><intent-filter><actionandroid:name="android.intent.action.VIEW"/><categoryandroid:name="android.intent.category.BROWSABLE"/><categoryandroid:name="android.intent.category.DEFAULT"/><dataandroid:scheme="http"/><dataandroid:scheme="https"/><dataandroid:scheme="inline"/><dataandroid:mimeType="text/html"/><dataandroid:mimeType="text/plain"/><dataandroid:mimeType="application/xhtml+xml"/><dataandroid:mimeType="application/vnd.wap.xhtml+xml"/></intent-filter><!-- For viewing saved web archives. --><intent-filter><actionandroid:name="android.intent.action.VIEW"/><categoryandroid:name="android.intent.category.BROWSABLE"/><categoryandroid:name="android.intent.category.DEFAULT"/><dataandroid:scheme="http"/><dataandroid:scheme="https"/><dataandroid:scheme="file"/><dataandroid:mimeType="application/x-webarchive-xml"/></intent-filter><!-- Accept inbound NFC URLs at a low priority --><intent-filterandroid:priority="-101"><actionandroid:name="android.nfc.action.NDEF_DISCOVERED"/><categoryandroid:name="android.intent.category.DEFAULT"/><dataandroid:scheme="http"/><dataandroid:scheme="https"/></intent-filter><!-- We are also the main entry point of the browser. --><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.DEFAULT"/><categoryandroid:name="android.intent.category.LAUNCHER"/><categoryandroid:name="android.intent.category.BROWSABLE"/></intent-filter><!-- The maps app is a much better experience, so it's not                 worth 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><actionandroid:name="android.intent.action.WEB_SEARCH"/><categoryandroid:name="android.intent.category.DEFAULT"/><categoryandroid:name="android.intent.category.BROWSABLE"/><dataandroid:scheme=""/><dataandroid:scheme="http"/><dataandroid:scheme="https"/></intent-filter><intent-filter><actionandroid:name="android.intent.action.MEDIA_SEARCH"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter><intent-filter><actionandroid:name="android.intent.action.SEARCH"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter><meta-dataandroid:name="android.app.searchable"android:resource="@xml/searchable"/></activity><activityandroid:name="ShortcutActivity"android:theme="@style/ShortcutTheme"android:label="@string/shortcut_bookmark"android:icon="@mipmap/ic_launcher_shortcut_browser_bookmark"><intent-filter><actionandroid:name="android.intent.action.CREATE_SHORTCUT"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter></activity><activityandroid:name="BrowserPreferencesPage"android:label="@string/menu_preferences"><intent-filter><actionandroid:name="android.intent.action.MANAGE_NETWORK_USAGE"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter></activity><activityandroid:name="BookmarkSearch"android:label="@string/bookmarks_search"android:stateNotNeeded="true"android:theme="@android:style/Theme.NoDisplay"android:excludeFromRecents="true"><intent-filter><actionandroid:name="android.intent.action.SEARCH"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter><meta-dataandroid:name="android.app.searchable"android:resource="@xml/bookmarks_searchable"/></activity><activityandroid:name="AddBookmarkPage"android:label="Save bookmark"android:theme="@style/DialogWhenLarge"android:configChanges="orientation|keyboardHidden|screenSize"><intent-filter><actionandroid:name="android.intent.action.INSERT"/><categoryandroid:name="android.intent.category.DEFAULT"/><dataandroid:mimeType="vnd.android.cursor.dir/bookmark"/></intent-filter></activity><activityandroid: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"/><activityandroid:name=".widget.BookmarkWidgetConfigure"android:theme="@android:style/Theme.Holo.DialogWhenLarge"><intent-filter><actionandroid:name="android.appwidget.action.APPWIDGET_CONFIGURE"/></intent-filter></activity><!-- Makes .BrowserActivity the search target for any activity in Browser --><meta-dataandroid:name="android.app.default_searchable"android:value=".BrowserActivity"/><!-- Application code for RLZ tracking.  RLZ assigns non-unique, non-personally identifiable             tracking labels to client products; these labels sometimes appear in Google search             queries.  See http://code.google.com/p/rlz for more info.             This value signifies to the RLZ client that this application uses RLZ tracking. --><meta-dataandroid:name="com.google.android.partnersetup.RLZ_ACCESS_POINT"android:value="@string/rlz_access_point"/><receiverandroid:name=".OpenDownloadReceiver"><intent-filter><actionandroid: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"/><receiverandroid:name=".AccountsChangedReceiver"><intent-filter><actionandroid:name="android.accounts.LOGIN_ACCOUNTS_CHANGED"/></intent-filter></receiver><receiverandroid:name=".PreloadRequestReceiver"android:permission="com.android.browser.permission.PRELOAD"><intent-filter><actionandroid:name="android.intent.action.PRELOAD"/><dataandroid:scheme="http"/></intent-filter></receiver><providerandroid:name=".provider.SnapshotProvider"android:authorities="com.android.browser.snapshots"android:exported="false"/></application></manifest>


结束

热点排行