指定浏览器访问指定页面(支持UC、Opera、QQ、Dolphin、Skyfire、Steel、Google)
/*先看一下系统浏览器com.android.browser 启动类在AndroidManifest.xml 中的声明:*/
<activityandroid:theme="@style/BrowserTheme"android:label="@string/application_name"android:name="BrowserActivity"android:launchMode="singleTask"android:configChanges="keyboardHidden|orientation"android:alwaysRetainTaskState="true"android:windowSoftInputMode="adjustResize">
<intent-filter>
<actionandroid:name="android.speech.action.VOICE_SEARCH_RESULTS"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
</intent-filter>
<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>
<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>
<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>
<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>
/*
复制代码在action赋值为”android.intent.action.VIEW“时可接收如下scheme为"http"等等类型的data。所以突发奇想,启动该程序后,指定action及Uri,即访问指定网页。好了,立马动手实践。代码如下:*/
packagelab.sodino.specifybrowser;
importjava.util.List;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.content.pm.PackageInfo;
importandroid.content.pm.PackageManager;
importandroid.net.Uri;
importandroid.os.Bundle;
/**
*@authorSodino
*@version2010年11月8日22时45分47秒
**/
publicclassVisitUrlActextendsActivity{
/**
*值为true时,使用传统方法让用户选择。<br/>
*值为false时,程序自动为用户选定浏览器浏览。<br/>
*目前支持且优先级从高到低为:<br/>
*1.UC浏览器<br/>
*2.Opera浏览器<br/>
*3.QQ浏览器<br/>
*4.DolphinBrowser(不支持WAP)<br/>
*5.SkyfireBrowser(不支持WAP)<br/>
*6.SteelBrowser(不支持WAP)<br/>
*7.系统浏览器<br/>
*验证是否支持直接启动访问指定页面的方法为:<br/>
*执行下面的<code>doDefault()</code>时会出现如下选择框,<br/>
*选择浏览器,如果能够正常访问,可以指定该浏览器访问指定网页;<br/>
*如果该浏览器启动后没有跳转到指定网页,则不支持。<br/>
*实践中,Go浏览器与天天浏览器并不支持。<br/>
*<imgsrc="../../../../choice.png"mce/><br/>
*正确显示图片请在不改变包名的前提下将choice.png放于工程目录下,与src、res同级。<br/>
*/
privatebooleanletUserChoice=false;
privateStringvisitUrl="http://blog.csdn.net/sodino";
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//showUCBrowser();
//showQQBrowser();
//showOperaBrowser();
//showDolphinBrowser();
//showSkyfireBrowser();
//showSteelBrowser();
if(letUserChoice){
doDefault();
}else{
choiceBrowserToVisitUrl(visitUrl);
}
//直接退出程序
finish();
}
privatevoidchoiceBrowserToVisitUrl(Stringurl){
booleanexistUC=false,existOpera=false,existQQ=false,existDolphin=false,existSkyfire=false,existSteel=false,existGoogle=false;
StringucPath="",operaPath="",qqPath="",dolphinPath="",skyfirePath="",steelPath="",googlePath="";
PackageManagerpackageMgr=getPackageManager();
List<PackageInfo>list=packageMgr.getInstalledPackages(0);
for(inti=0;i<list.size();i++){
PackageInfoinfo=list.get(i);
Stringtemp=info.packageName;
if(temp.equals("com.uc.browser")){
//存在UC
ucPath=temp;
existUC=true;
}elseif(temp.equals("com.tencent.mtt")){
//存在QQ
qqPath=temp;
existQQ=true;
}elseif(temp.equals("com.opera.mini.android")){
//存在Opera
operaPath=temp;
existOpera=true;
}elseif(temp.equals("mobi.mgeek.TunnyBrowser")){
dolphinPath=temp;
existDolphin=true;
}elseif(temp.equals("com.skyfire.browser")){
skyfirePath=temp;
existSkyfire=true;
}elseif(temp.equals("com.kolbysoft.steel")){
steelPath=temp;
existSteel=true;
}elseif(temp.equals("com.android.browser")){
//存在GoogleBroser
googlePath=temp;
existGoogle=true;
}
}
if(existUC){
gotoUrl(ucPath,url,packageMgr);
}elseif(existOpera){
gotoUrl(operaPath,url,packageMgr);
}elseif(existQQ){
gotoUrl(qqPath,url,packageMgr);
}elseif(existDolphin){
gotoUrl(dolphinPath,url,packageMgr);
}elseif(existSkyfire){
gotoUrl(skyfirePath,url,packageMgr);
}elseif(existSteel){
gotoUrl(steelPath,url,packageMgr);
}elseif(existGoogle){
gotoUrl(googlePath,url,packageMgr);
}else{
doDefault();
}
}
privatevoidgotoUrl(StringpackageName,Stringurl,
PackageManagerpackageMgr){
try{
Intentintent;
intent=packageMgr.getLaunchIntentForPackage(packageName);
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse(url));
startActivity(intent);
}catch(Exceptione){
//在1.5及以前版本会要求catch(android.content.pm.PackageManager.NameNotFoundException)异常,该异常在1.5以后版本已取消。
e.printStackTrace();
}
}
privatevoiddoDefault(){
Intentintent=newIntent(Intent.ACTION_VIEW,Uri.parse(visitUrl));
startActivity(intent);
}
/**直接启动UC,用于验证测试。*/
privatevoidshowUCBrowser(){
Intentintent=newIntent();
intent.setClassName("com.uc.browser","com.uc.browser.ActivityUpdate");
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse(visitUrl));
startActivity(intent);
}
/**直接启动QQ,用于验证测试。*/
privatevoidshowQQBrowser(){
Intentintent=newIntent();
intent.setClassName("com.tencent.mtt","com.tencent.mtt.MainActivity");
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse(visitUrl));
startActivity(intent);
}
/**直接启动Opera,用于验证测试。*/
privatevoidshowOperaBrowser(){
Intentintent=newIntent();
intent.setClassName("com.opera.mini.android",
"com.opera.mini.android.Browser");
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse(visitUrl));
startActivity(intent);
}
/**直接启动DolphinBrowser,用于验证测试。*/
privatevoidshowDolphinBrowser(){
//方法一:
//Intentintent=newIntent();
//intent.setClassName("mobi.mgeek.TunnyBrowser",
//"mobi.mgeek.TunnyBrowser.BrowserActivity");
//intent.setAction(Intent.ACTION_VIEW);
//intent.addCategory(Intent.CATEGORY_DEFAULT);
//intent.setData(Uri.parse(visitUrl));
//startActivity(intent);
//方法二:
gotoUrl("mobi.mgeek.TunnyBrowser",visitUrl,getPackageManager());
}
/**直接启动SkyfireBrowser,用于验证测试。*/
privatevoidshowSkyfireBrowser(){
//方法一:
Intentintent=newIntent();
intent.setClassName("com.skyfire.browser",
"com.skyfire.browser.core.Main");
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse(visitUrl));
startActivity(intent);
//方法二:
//gotoUrl("com.skyfire.browser",visitUrl,getPackageManager());
}
/**直接启动SteelBrowser,用于验证测试。*/
privatevoidshowSteelBrowser(){
//方法一:
//Intentintent=newIntent();
//intent.setClassName("com.kolbysoft.steel",
//"com.kolbysoft.steel.Steel");
//intent.setAction(Intent.ACTION_VIEW);
//intent.addCategory(Intent.CATEGORY_DEFAULT);
//intent.setData(Uri.parse(visitUrl));
//startActivity(intent);
//方法二:
gotoUrl("com.kolbysoft.steel",visitUrl,getPackageManager());
}
}
//复制代码ok,成功了。转载自:http://blog.csdn.net/Vincent_czz/archive/2011/01/04/6115037.aspx