Android中Scheme跳转协议
来源:互联网 发布:it发展规划 编辑:程序博客网 时间:2024/05/22 06:04
简书地址
http://www.jianshu.com/p/7b56ed162a63
Android中Activity之间的跳转我们可以直接使用显示或者隐式意图跳转都可以
但是实际开发过程中可能会碰到这类问题
比如App做活动,通过推送过来的消息告诉客户端跳转到某某界面,客户端本地自然不能写死,不然就麻烦了
今天小结一下开发过程中碰到的这类问题的解决方式:
我们都知道网站都是通过URL的形式访问的
同样的我们App也完全可以通过这种方式进行跳转
举个小例子
<a href='andy://domain/path?params'>点我试试</a> andy为自定义的scheme,固定字符串。
在清单文件中加入IntentFilter
在TextView中显示
当然这里设置了当前的Activity的启动模式为singleTask,防止MainActivity重复启动
然后在MainActivtiy中重写onNewIntent方法,获取参数
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Uri uri = intent.getData(); if (uri != null) { System.out.println(uri.toString()); } }
断点可以看到已经有数据传递过来了
这个时候我们只需要根据Uri获取里面的参数然后做相应的动作即可
Uri结构的基本形式
[scheme:][//domain][path][?query][#fragment]
Uri结构参考http://blog.csdn.net/harvic880925/article/details/44679239
现在我们定义具体的参数
比如我们跳转的页面是SchemeActivtiy参数buffer
domain=scheme_activity
buffer=这是个字符串
<a href='andy://scheme_activity?type=0&buffer=这是个字符串'>点我一下</a>
private static final String SCHEME_DOMAIN = "scheme_activity";private static final String TAG = MainActivity.class.getSimpleName();
相关解析代码
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Uri uri = intent.getData(); if (uri != null) { dispatchUri(uri); } else { Log.e(TAG, "Uri is null"); } } private void dispatchUri(Uri uri) { try { final String domain = uri.getAuthority(); if (TextUtils.equals(SCHEME_DOMAIN, domain)) { final String buffer = uri.getQueryParameter("buffer"); final int type = Integer.valueOf(uri.getQueryParameter("type")); Toast.makeText(this, type + " " + buffer, Toast.LENGTH_SHORT).show(); } } catch (Exception e) { Log.e(TAG, "Uri Parse Error"); } }
点击测试
完整Demo地址
0 0
- Android中Scheme跳转协议
- android H5 应用内跳转Scheme协议
- Android应用内跳转Scheme协议
- Scheme跳转协议
- Scheme跳转协议
- Android产品研发(十一)-->应用内跳转Scheme协议
- Android产品研发(十一)-->应用内跳转Scheme协议
- android产品研发-应用内跳转协议scheme
- Android 通过scheme跳转界面
- intent-filter匹配与scheme跳转协议
- ℃江让您从精通到入门:Android任务栈和scheme跳转协议
- Android URL Scheme协议使用
- Android 浏览器自定义scheme:market://协议
- Android Scheme协议与应用全解析
- android:scheme 通过uri跳转到APP应用指定Activity
- android scheme 跳转应用 如何获取intent传的参数
- iOS中使用URL Scheme进行App跳转的教程
- JS和安卓互相调用以及Scheme协议完成外部链接跳转app指定页面
- excel基础应用
- #pragma warning( pop ) 和#pragma warning( push )有什么用
- hdu 2178 悼念512汶川大地震遇难同胞――老人是真饿了
- 安卓内存泄漏相关
- Base64图片与UIImage的相互转化
- Android中Scheme跳转协议
- 面向移动设备的HTML5开发框架
- 不同内网通信
- WebStorm 2016.2 版本发布
- C#: static关键字的作用
- 升级okhttp3.0+和retrofit2.0+的过程以及遇到的坑
- pdf在线转图片格式的方法
- ajax数据请求和多个音频的点击事件随笔
- Leetcode 237. Delete Node in a Linked List (Easy) (cpp)