
Android中的Scheme是一种页面跳转协议,和网站通过URL的形式访问一样,APP同样可以通过这种方式进行跳转,它可以很方便的满足我们在一些场景中的需求:
所属:
URL是一种资源定位器和根据协议建立的约束规则与资源通信的读写机制,用于定位、读写资源。
所属:
URI仅仅是资源名称,知道了URI最多就是知道有这么一个名称的资源,也就是说URI只能定位资源。
所属:
Uri是URI的“扩展”以适应Android系统的需要,Uri类是一个不可改变的URI引用,包括一个URI和一些碎片,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。
在Android中我们使用Uri
进一步划分:
上边的解释是抄来的
出处在此
模拟点击链接获得链接中的参数
AndroidManifest中设置增加拦截器(intent-filter),设置scheme
设置链接
在SchemeActivity中通过重写onNewIntent方法获取参数
Log如下:
这里的” chicha://domain/pathparams ”就是服务器下发的跳转路径,当我们执行startActivity的时候就会调起SchemeActivity,然后我们通过在SchemeActivity解析scheme的内容,跳转相应的页面。
Activity之间传递数据是通过Intent来传递的。
Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Activity来浏览网页。
Android的三个基本组件——Activity,Service和Broadcast Receiver——都是通过Intent机制激活的,不同类型的组件有不同的传递Intent方式:
要激活一个新的Activity,或者让一个现有的Activity做新的 *** 作,可以通过调用ContextstartActivity()或者ActivitystartActivityForResult()方法。
要启动一个新的Service,或者向一个已有的Service传递新的指令,调用ContextstartService()方法或者调用ContextbindService()方法将调用此方法的上下文对象与Service绑定。
ContextsendBroadcast()、ContextsendOrderBroadcast()、ContextsendStickBroadcast()这三个方法可以发送Broadcast Intent。发送之后,所有已注册的并且拥有与之相匹配IntentFilter的BroadcastReceiver就会被激活。
Intent一旦发出,Android都会准确找到相匹配的一个或多个Activity,Service或者BroadcastReceiver作响应。所以,不同类型的Intent消息不会出现重叠,即Broadcast的Intent消息只会发送给BroadcastReceiver,而决不会发送给Activity或者Service。由startActivity()传递的消息也只会发给Activity,由startService()传递的Intent只会发送给Service。
你获取的uri没有问题。但assets目录下的不能使用这种方法读取。你得把它先复制到sdcard中,然后从sdcard中传递这个至于原因嘛:assets目录里面的资源文件还在应用程序的apk文件中,一个压缩文件中。所以不能这样读
以上就是关于Scheme跳转协议全部的内容,包括:Scheme跳转协议、Android 两个Activity之间怎样使用Uri传递图片,怎样获取图片的Uri,怎样通过Uri得到图片、如何获得assets目录下文件的uri等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)