- 浏览: 55256 次
- 性别:
- 来自: 武汉
最新评论
-
Stark_Summer:
很好 顶顶
android 面试题经典 -
fff32165:
LZ好牛啊!膜拜ing
activity与service的交互
/*先看一下系统浏览器com.android.browser 启动类在AndroidManifest.xml 中的声明:*/
<activity android: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>
<action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<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>
<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>
<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>
<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>
/*
复制代码在action 赋值为”android.intent.action.VIEW“ 时可接收如下scheme 为"http" 等等类型的data 。所以突发奇想,启动该程序后,指定action 及Uri ,即访问指定网页。好了,立马动手实践。代码如下:*/
package lab.sodino.specifybrowser;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
/**
* @author Sodino
* @version 2010年11月8日22时45分47秒
* */
public class VisitUrlAct extends Activity {
/**
* 值为true时,使用传统方法让用户选择。<br/>
* 值为false时,程序自动为用户选定浏览器浏览。<br/>
* 目前支持且优先级从高到低为:<br/>
* 1.UC浏览器<br/>
* 2.Opera浏览器<br/>
* 3.QQ浏览器<br/>
* 4.Dolphin Browser(不支持WAP)<br/>
* 5.Skyfire Browser(不支持WAP)<br/>
* 6.Steel Browser(不支持WAP)<br/>
* 7.系统浏览器<br/>
* 验证是否支持直接启动访问指定页面的方法为:<br/>
* 执行下面的<code>doDefault()</code>时会出现如下选择框,<br/>
* 选择浏览器,如果能够正常访问,可以指定该浏览器访问指定网页;<br/>
* 如果该浏览器启动后没有跳转到指定网页,则不支持。<br/>
* 实践中,Go浏览器与天天浏览器并不支持。<br/>
* <img src="../../../../choice.png" mce_src="choice.png"/> <br/>
* 正确显示图片请在不改变包名的前提下将choice.png放于工程目录下,与src、res同级。<br/>
*/
private boolean letUserChoice = false;
private String visitUrl = "http://blog.csdn.net/sodino";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// showUCBrowser();
// showQQBrowser();
// showOperaBrowser();
// showDolphinBrowser();
// showSkyfireBrowser();
// showSteelBrowser();
if (letUserChoice) {
doDefault();
} else {
choiceBrowserToVisitUrl(visitUrl);
}
// 直接退出程序
finish();
}
private void choiceBrowserToVisitUrl(String url) {
boolean existUC = false, existOpera = false, existQQ = false, existDolphin = false, existSkyfire = false, existSteel = false, existGoogle = false;
String ucPath = "", operaPath = "", qqPath = "", dolphinPath = "", skyfirePath = "", steelPath = "", googlePath = "";
PackageManager packageMgr = getPackageManager();
List<PackageInfo> list = packageMgr.getInstalledPackages(0);
for (int i = 0; i < list.size(); i++) {
PackageInfo info = list.get(i);
String temp = info.packageName;
if (temp.equals("com.uc.browser")) {
// 存在UC
ucPath = temp;
existUC = true;
} else if (temp.equals("com.tencent.mtt")) {
// 存在QQ
qqPath = temp;
existQQ = true;
} else if (temp.equals("com.opera.mini.android")) {
// 存在Opera
operaPath = temp;
existOpera = true;
} else if (temp.equals("mobi.mgeek.TunnyBrowser")) {
dolphinPath = temp;
existDolphin = true;
} else if (temp.equals("com.skyfire.browser")) {
skyfirePath = temp;
existSkyfire = true;
} else if (temp.equals("com.kolbysoft.steel")) {
steelPath = temp;
existSteel = true;
} else if (temp.equals("com.android.browser")) {
// 存在GoogleBroser
googlePath = temp;
existGoogle = true;
}
}
if (existUC) {
gotoUrl(ucPath, url, packageMgr);
} else if (existOpera) {
gotoUrl(operaPath, url, packageMgr);
} else if (existQQ) {
gotoUrl(qqPath, url, packageMgr);
} else if (existDolphin) {
gotoUrl(dolphinPath, url, packageMgr);
} else if (existSkyfire) {
gotoUrl(skyfirePath, url, packageMgr);
} else if (existSteel) {
gotoUrl(steelPath, url, packageMgr);
} else if (existGoogle) {
gotoUrl(googlePath, url, packageMgr);
} else {
doDefault();
}
}
private void gotoUrl(String packageName, String url,
PackageManager packageMgr) {
try {
Intent intent;
intent = packageMgr.getLaunchIntentForPackage(packageName);
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse(url));
startActivity(intent);
} catch (Exception e) {
// 在1.5及以前版本会要求catch(android.content.pm.PackageManager.NameNotFoundException)异常,该异常在1.5以后版本已取消。
e.printStackTrace();
}
}
private void doDefault() {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(visitUrl));
startActivity(intent);
}
/** 直接启动UC,用于验证测试。 */
private void showUCBrowser() {
Intent intent = new Intent();
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,用于验证测试。 */
private void showQQBrowser() {
Intent intent = new Intent();
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,用于验证测试。 */
private void showOperaBrowser() {
Intent intent = new Intent();
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);
}
/** 直接启动Dolphin Browser,用于验证测试。 */
private void showDolphinBrowser() {
// 方法一:
// Intent intent = new Intent();
// 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());
}
/** 直接启动Skyfire Browser,用于验证测试。 */
private void showSkyfireBrowser() {
// 方法一:
Intent intent = new Intent();
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());
}
/** 直接启动Steel Browser,用于验证测试。 */
private void showSteelBrowser() {
// 方法一:
// Intent intent = new Intent();
// 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
发表评论
-
hydra框架中js与java互调原理
2019-06-10 17:18 0本文档主要阐述hydra框架中js与java是如何实现相互 ... -
自定义gradle插件
2019-09-02 11:25 4021.Gradle插件 Gradle可以认为是一个框 ... -
Rxjava2使用
2019-04-24 17:46 0Rxjava是一个基于观察者模式,通过可观察对象发送数据流 ... -
android NDK cmake
2019-04-19 16:00 0CMake是一个跨平台的安 ... -
504 Unsatisfiable Request 问题解决
2019-04-15 11:09 0问题出现背景及描述:在业务中使用Retrofit2网络工具库进 ... -
adb 命令操作
2019-04-11 16:46 0解决ANR还得需要trace.txt ... -
Android Framework之常用类介绍
2012-05-17 09:10 0WindowManagerService 窗口调度服务 ... -
application私有文件访问
2012-05-16 23:13 0首先内部存储路径为/data/data/youPackageN ... -
BroadcastReceiver的使用
2011-12-15 09:47 836使用广播接收器有两种方法,一种是建立一个BroadcastRe ... -
android:gravity 与 layout_gravity的区别
2011-10-27 16:04 700android:gravity 本view内部信息的排列方式对 ... -
activity与service的交互
2011-07-31 13:16 1575Activity访问service有两种方式,第一种是通过Ib ... -
android用于打开各种文件的intent
2011-07-29 23:33 1035android用于打开各种文件的intent 2011-03 ... -
Android源码学习之六——ActivityManager框架解析
2011-07-06 22:46 954ActivityManager在操作系统中有重要的作用,本文利 ... -
Android Application Task Activities的关系
2011-07-05 22:11 833什么是Android Application ... -
Android的PackageManager和ActivityManager的功能简介
2011-07-05 21:56 957Android系统为应用管理功能提供了大量的API。根据功能的 ... -
Android 对话框(Dialog)大全
2011-06-30 20:38 773Android 对话框(Dialog)大全 建立你自己的对 ... -
android 开发环境搭建
2011-06-19 15:15 7221.jdk安装及环境变量配置 以jdk1.4 ... -
[Android]正确地访问网络资源----Proxy的使用
2011-05-27 15:15 2486天朝有很多独特的东西,今天要涉及到的是CMWAP与CMNET。 ... -
android:webView总结
2011-05-27 10:02 1133在Android手机中内置了一款高性能webkit内核浏览器, ... -
android 发送短信
2011-05-25 17:56 777要使用手机短信服务,在AndroidManifest.xml中 ...
相关推荐
今天,我们推荐五款适合安卓平板使用的浏览器,分别是 Opera Mobile、 Google Chrome、UC 浏览器、Firefox 浏览器和 Dolphin 浏览器。 一、Opera Mobile 作为一个老牌的浏览器厂商,Opera 在移动平台上一直保持着...
- **手机QQ浏览器**:类似UC,具备主要功能,但整体体验较弱。 - **GO浏览器**:3G门户出品,模仿UC,功能与UC相近。 2. **分类与特点** - **高效内核浏览器**:如Chrome Lite和Safari,具备全面功能,性能...
谷歌蜂巢平板浏览器点评 从上述文件中,我们可以生成以下知识点: 一、平板电脑的概念和特点 * 平板电脑是一种多功能的移动互联网终端产品 * 它可以用作电子书、掌上游戏机等,但离开网络将很难使用 * 平板电脑有...
Dolphin浏览器是一款基于Webkit内核的移动设备浏览器,它支持Android和iOS等操作系统。在Dolphin 7.0版本中,我们可以期待一系列的改进和新特性,旨在提供更流畅的浏览体验和更高的用户满意度。 从提供的压缩包文件...
6. 使用Web界面:通过浏览器访问DolphinScheduler的Web界面,进行工作流设计、任务调度等操作。 在实际应用中,DolphinScheduler可以与MySQL配合,实现复杂的大数据处理任务的自动化调度。例如,你可以创建一个工作...
Apache DolphinScheduler(apache-dolphinscheduler-3.0.0-beta-1-bin.tar....DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。
5. `webapp`目录:存储了前端Web应用资源,用户可以通过浏览器访问DolphinScheduler的Web界面,进行任务创建、调度配置、监控等操作。 6. `docs`目录:包含项目文档,帮助用户理解DolphinScheduler的使用方法和API...
DolphinScheduler是一款开源的工作流调度系统,专为大数据任务设计,用于构建复杂的数据处理流程。这个名为"DolphinScheduler1.3.0安装包.rar"的压缩文件包含了安装DolphinScheduler 1.3.0版本所需的所有组件和配置...
DolphinScheduler是一个分布式、易扩展的工作流调度系统,广泛应用于大数据处理场景中,它能够有效地管理复杂的工作流程,并支持多种类型的计算引擎。而Hive作为一个基于Hadoop的数据仓库工具,主要用于对存储在...
Apache DolphinScheduler,通常被称为DolphinScheduler,是一个分布式工作流调度系统,主要设计用于大数据处理领域的任务编排和流程管理。这个压缩包“apache-dolphinscheduler-1.3.2-dolphinscheduler-bin.tar.gz”...
每个组件的配置都需要根据实际的集群环境来设定,确保Dolphinscheduler能够正确地访问和调度这些资源。同时,Dolphinscheduler的界面也提供了方便的任务管理和监控功能,使得大数据处理工作流的管理变得更加高效和...
6. **验证安装**:通过Web界面访问DolphinScheduler,检查是否能正常登录并操作。 在实际部署中,可能还需要考虑高可用性、负载均衡、安全性等方面的问题。例如,部署多个Master节点以实现HA,配置SSL证书以加密...
Dolphin是一款知名的模拟器软件,它允许用户在个人计算机上运行GameCube和Wii游戏。这个"**Dolphin 6.1.6汉化文件**"是针对Dolphin 6.1.6版本的中文语言包,旨在为用户提供更友好的中文界面,使非英语用户能够更轻松...
Apache DolphinScheduler 是一个分布式易扩展... DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。
这一步非常重要,因为DolphinScheduler和其他依赖组件如MySQL和ZooKeeper都需要Java环境支持。 - **下载地址**: [JDK 1.8](https://www.oracle.com/java/technologies/javase-jdk8-downloads.html) - **安装步骤**: ...
Dolphin Scheduler介绍PPT
DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作 简单易用 DAG监控界面,所有流程定义都是可视化,通过拖拽任务定制DAG,通过...
dolphinscheduler 1.3.6 编译镜像,用于编译dolphinscheduler
《Dolphinscheduler工作流模板在大数据处理中的应用》 Dolphinscheduler是一款强大的工作流调度系统,尤其在大数据处理领域,它以其直观的图形化界面、丰富的任务类型以及强大的协同能力,为数据工程师提供了高效的...