情景:在浏览器中唤起我们自己的应用
配置:
1. 首先,在HTML的页面中添加如下格式链接:
第一种方式:<a href="[scheme]://[host]/[path]?[query]">启动应用程序</a>
举例:
<a href="http://example.com/status?name=yoosir&age=20">启动应用程序</a>
第二种方式:<a href="[scheme]://[host]/[path]/parameters">启动应用程序</a>
举例:
<a href="http://example.com/status/1234">
2.在AndroidManifest.xml中做如下配置:
<activity android:name=".activity.SplashActivity">
....//其他 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" //对应url中的scheme 可以定义成自己特定的,比如 my.special.scheme
android:host="example.com" //对应url 中的 host
android:pathPrefix="/status" //对应url中的path **注意**: / 需要这里添加
/>
</intent-filter>
</activity>
3.在代码中对点击事件做处理
//一般在 activity的 onCreate中做处理
/** 对应URL 的第一种配置方法 **/
String action = getIntent().getAction();
if(Intent.ACTION_VIEW.equals(action)){
//可以通过Action 来判断是不是浏览器启动
Uri uri = i_getvalue.getData();
}
if(uri != null){
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "example.com"
String name = uri.getQueryParameter("name"); // "yoosir"
String age= uri.getQueryParameter("age"); // "20"
}
/** 对应URL 的第二种配置方法 **/
Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "example.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"
4.特殊操作
//经测试,在小米手机的默认浏览器和UC上都可以正常运行
启动应用Dialog <a href="http://example.com/openwith"> click me </a>
//经测试,在小米手机的默认浏览器可以正常运行。UC上没反应
package= 应用包名
启动应用没有Dialog:<a href="intent://example.com/openwith#Intent;scheme=http;package=com.xxx.xxx;end;"> click me </a>
总结下:
- 第三方浏览器,对 "#Intent;scheme=http;package=com.xxx.xxx;end;"默认不识别,所以不推荐使用这种方式。
- 在QQ中通过以上方法可以唤醒应用。
- 在微博和微信中不可行。
最后一个技巧:
我们可以写一个 带有链接的 html 文件在手机上用浏览器打开测试。但是,QQ上怎么测试呢?
大家可以直接在简书上写一个链接
//链接就放你们自己定义的,就可以通过打开文章链接,找到并 点击 启动应用,就可以在QQ上唤醒你的应用了。
[启动应用]("http://example.com/openwith")