指定浏览器访问指定页面(支持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

相关推荐