1、实作一个网页里面有一个特定的URL,例如:「myapp://Order?SID=201112301333001」;
4: </<span id="8_nwp" style="border: 0px; font-family: inherit; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: auto; height: auto; float: none;">head>server">
9: app://Order?SID=201112301333001">您有一封新单据。
2. 建立透过URL启动后要处理的Activity与撷取参数的功能;
1: @Override
2: protected void onCreate(Bundle savedInstanceState) {
3: super.onCreate(savedInstanceState);
4: setContentView(R.layout.urlopen);
5: //取得要显示参数的TextView对象
6: TextView tView = (TextView) findViewById(R.id.textView1);
7:
8: //取得URL所带进来的Intent对象
9: Intent tIntent = this.getIntent();
10: //取得Schema,值为:myapp
11: String tSchema = tIntent.getScheme();
12: //取得URL
13: Uri myURI = tIntent.getData();
14: if (myURI != null) {
15: //取得URL中的Query String参数
16: String tValue = myURI.getQueryParameter("SID");
17: tView.setText(tValue);
18: }
19: }
3. 定义AndroidManifest.xml中支持URL的Schema与互相的相关参数;
4: android:label="@string/app_name">
19: <<span id="2_nwp" style="border: 0px; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; width: auto; height: auto; float: none;">data android:scheme="myapp"/>
以上是介绍如何透过特定的URL来启动自己的应用程序,由于该用途很适合结合目前公司既有程序,因为不想特别公开联机信息出来时,透过URL夹带参数给已安装于手机中的应用程序,再与后端系统进行互动,既可以做到与设备的结合更可以让部分安全性得到保护。
click me!
应用市场App的声明:
当我们的链接是这样的时候,应用商场就会被打开。(应用商场,如应用包、360等商场类型的应用都会响应此请求)
参考:
http://stackoverflow.com/questions/2958701/launch-custom-android-application-from-android-browser
http://stackoverflow.com/questions/3469908/make-a-link-in-the-android-browser-start-up-my-app
在iPhone、Android或Windows Phone 7的环境都支持透过URL中特定的Schema来启动特定的应用程序,例如:「zune:\\」、「contnet:\\」…等,该目的告诉系统有一特定的连结要被启动,请系统动找到注册对应该Schema的程序并且启动它,如果想要夹参数带入应用程序中,写法就如同透过QueryString的方式将Key/Value带入URL中,由程序启动时根据特定的参数取得值来完成任务。
Intent可被不同的应用程序建立当作互相沟通的主要接口,它本身是个对象用于保存讯息交换的内容、Anrdoid固定参等,在三种不同组件使用方式也有所不同,如下:
‧Activity:
‧Service:
‧Boardcast Service:
A-1. Component Name:
Constant Target component Action ACTION_CALL activity 启动一个拨打电话。 ACTION_EDIT activity 显示数据提供用户有编辑能力。 ACTION_MAIN activity 预设第一个启动的activity,没有数据输入和回传数据输出。 ACTION_SYNC activity 设备与伺服务同步数据。 ACTION_VIEW activity 显示数据不支持编辑能力。 ACTION_DIAL activity 启动拨号程序并填入拨号的号码。 ACTION_BATTERY_LOW broadcast receiver 当电量过低时发出的警告。 ACTION_HEADSET_PLUG broadcast receiver 设备已经插入了耳机,或将它拔掉。 ACTION_SCREEN_ON broadcast receiver 屏幕被打开。 ACTION_TIMEZONE_CHANGED broadcast receiver 时区设置发生了变化。
A-3. Category:
Constant Meaning CATEGORY_BROWSABLE 目标activity可以安全地被透过Browser中显示的link(或uri)来启动,例如:透过image或mail来启动对应的应用程序。 CATEGORY_GADGET activity可以被嵌入至另一个hosts gadgets中的activity。 CATEGORY_HOME activity呈现于HOME screen,也就是当用户按下实体键盘中的HOME时,用户第一个看到的画面。例如:GO桌面即是这种类型的组件。 CATEGORY_LAUNCHER activity是task的初始activity,并且是application launcher的top-level。该类型常设定应用程序第一个启动的activity,并且配合ACTION_MAIN一同定义该activity。 CATEGORY_PREFFRENCE 目标activity是一个preference
A-4. Data:
介绍了Intent后,其实可以了解Android在三种组件互动或是透过Browser互动,均是透过Intent概念来进行互动。因此,最后就介绍如果要让自己的应用程序可以接受URL Schema所影响的Intent要设定的参数有那些,进一步去了解Intent-Filter的特性。
B. Intent-filter:
Android在使用Explicit intents时,由于目标比较明确比较没有问题,但在遇到Implicit intents时,系统必须寻找到最匹配的组件来处理Intent,例如:在AndroidManifest.xml定义Activity、Service或Broadcast Receiver来处理特定的Intent(Intent-Filter)。
透过Intent-Filter定义了组件需要处理的explicit、implicit Intents,但如果组件没有定义Intent-Filter的话,该组件只能处理explicit intents。
类别,filter有三个主要的重点:(1). action;(2).
1:
1:
2:
3:
4:
1:
2:
3:
4:
‧透过URL启动的与透过手动启动的应用程序二者是不同的,前者是依赖着启动者的线程所启动,后者则是独立的线程,二者其实控制的功能都是一样的,最大的差异在于透过URL启动的应用程序,在长按「实体home键」要切换响应用程序时,它不会出现暂存清单中。