引言
在Mobile Analytics一文中,我们谈到了Mobile APP和 Web APP数据最大的区别是在数据的开放度的问题,那我们就从uri和urL说起。
1、URI和URL
URI抽象结构 [scheme:]scheme-specific-part[#fragment]
[scheme:][//authority][path][?query][#fragment]
authority为[user-info@]host[:port]
可以看出URI一般由三部分组成:访问资源的命名机制(scheme),存放资源的授权,包括用户信息和主机信息(authority),资源自身的名称,由路径表示(path)。除外,还有query和fragment
2、WEB 的开放世界和 HTTP协议
3、Android Activity与URI
<a href="xl://goods:8888/goodsDetail?goodsId=10011002">打开商品详情</a>
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("xl://goods:8888/goodsDetail?goodsId=10011002"));
startActivity(intent);
这样其它应用就可以访问到了
4、Android Content Provider 与URI
ContentProvider在android中的作用是对外共享数据, 也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对你应用中的数据进行添删改查。关于数据共享,以前我们学习过文件操作模式,知道通过指定文件的操作模式为Context.MODE_WORLD_READABLE或 Context.MODE_WORLD_WRITEABLE同样也可以对外共享数据。那么,这里为何要使用ContentProvider对外共享数据呢?是这样的,如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一,如:采用xml文件对外共享数 据,需要进行xml解析才能读取数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读取数据。
使用ContentProvider对外共享数据的好处是统一了数据的访问方式,
ContentProvider的URI由以下三部分组成: "content://"、数据的路径、标示ID(可选),举些例子,如:
所有联系人的Uri: content://contacts/people
某个联系人的Uri: content://contacts/people/5
所有图片Uri: content://media/external
某个图片的Uri:content://media/external/images/media/4