android采用Chrome Intent方式实现从浏览器启动应用
来源:互联网 发布:淘宝买家钻号 编辑:程序博客网 时间:2024/06/04 01:35
在很多应用中需要我们从浏览器中直接启动应用,而网上大多数采用的是scheme的方式,即在启动activity的mainfest文件中配置如下字段:
的方式,具体示例如下。
这样如果没有对应应用,该链接就会跳转到S.browser_fallback_url指定的url上。
然后在启动activity的onCreate函数中利用bundle接收参数就行了
至此,通过浏览器启动app就大功告成了,但是需要注意的是,很多第三方浏览器会拦截掉chrome intent启动应用的请求,像uc,微信内置浏览器,QQ浏览器等,在这些页面要做一个提示,让用户跳转到源生的浏览器上才能打开应用。
<activity android:name=”com.example.MainActivity”> <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=”example” android:host=”test” /> </intent-filter></activity>
然后在网页的连接设置为example://test/… 来启动应用,但是如果手机中没有应用,该url会跳转到一个错误的界面。
google官方在chrome中推出了一种Android Intents的方式来实现应用启动,通过在iframe中设置src为
intent:HOST/URI-path // Optional host#Intent;package=[string];action=[string];category=[string];component=[string]; scheme=[string];end;
的方式,具体示例如下。
我们定义一个a标签为
<pre name="code" class="html"><pre name="code" class="html"><a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;end">Do Whatever</a>然后在mainfest文件中定义要启动的activity
<activity android:name=".TestUrlScheme" > <intent-filter> <action android:name="android.intent.action.VIEW" /><!-- 显示数据 --> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /><!-- 定义成浏览器类型,有URL需要处理时会过滤 --> <data android:scheme="myapp" android:host="whatever" android:path="/" /><!-- 打开以whatever协议的URL,这个自己随便定义。 --> </intent-filter></activity>然后在浏览器中点击a标签,就可以启动应用程序的对应activity了,如果手机中没有相应的应用,那么是否会跳转到错误页面呢,将a标签设置为
<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">Do Whatever</a>
这样如果没有对应应用,该链接就会跳转到S.browser_fallback_url指定的url上。
如果我们还需要对在a标签中对指定activity进行传值呢?那也有办法,参考stackoverflow上面的一个回答点击打开链接,将a标签设置为
<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.name=Perico%20de%20los%20Palotes;I.age=35;end">Do Whatever</a>其中参数的类型如下
String => 'S'Boolean =>'B'Byte => 'b'Character => 'c'Double => 'd'Float => 'f'Integer => 'i'Long => 'l'Short => 's'
然后在启动activity的onCreate函数中利用bundle接收参数就行了
Bundle parametros = getIntent().getExtras();if (extras != null){ String name = extras.getString("name"); Integer age = extras.getInt("age"); if (name!=null && age!=null) { //do whatever you have to //... }}else{ //no extras, get over it!!}
至此,通过浏览器启动app就大功告成了,但是需要注意的是,很多第三方浏览器会拦截掉chrome intent启动应用的请求,像uc,微信内置浏览器,QQ浏览器等,在这些页面要做一个提示,让用户跳转到源生的浏览器上才能打开应用。
0 0
- android采用Chrome Intent方式实现从浏览器启动应用
- Android中从一个应用中启动另外的应用的实现方式
- Android之Intent之启动浏览器
- android 通过点击上下文菜单采用intent启动activity
- android 通过点击上下文菜单采用intent启动activity
- android 通过点击上下文菜单采用intent启动activity
- 谷歌将把Chrome浏览器应用至Android
- android隐式intent及启动方式
- android隐式intent及启动方式
- Android-Intent两种启动方式
- android-Intent启动activity的几种方式-隐式Intent
- android 应用启动intent filter配置
- Android中通过intent启动另一个应用
- Android Intent启动别的应用…
- Android Intent启动别的应用…
- Android Intent Filter应用方式讲解
- Android实现chrome浏览器的Tab样式
- android应用开发实践三----Atcity 通过Intent 来启动另一个Activity来实现简易拨号
- MySQL cluster 如何创建磁盘表解读
- Nginx+Lua+WeedFS安装手记
- volatile 变量
- ubuntu下允许root用户ssh远程登录及Linux下服务的启动
- 密码切换显示和隐藏 并且保证切换时候EditText显示在最后一行
- android采用Chrome Intent方式实现从浏览器启动应用
- JavaScript 中的变量和函数提升
- 《疯狂Java讲义(第3版)》.(李刚)——面向对象(上)
- 【转载】python获取文件及文件夹大小
- 在android中用NetworkImageView读取网络图片并通过ListView显示出来
- 剑指offer|从尾到头打印链表
- IOS NetworkExtension 框架使用笔记
- Android入门--Intent数据传递
- 影响蓝牙BLE设备功耗的几个因素