如何在android上实现我自己的URI方案假设我想定义一个URI,例如:myapp://path/to/what/i/want?d=This%20is%20a%20test必须由我自己的申请或服务来处理。请注意,该计划是"myapp"而不是"http",或"ftp"..这正是我的意图:为Android操作系统在全球范围内定义自己的URI模式。这个是可能的吗?这在某种程度上类似于某些程序已经做的事情,例如Windows系统,如Skype(skype://)或任何急流下载程序(torrent://).
3 回答
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
千巷猫影
TA贡献1829条经验 获得超7个赞
这是非常可能的;您可以在AndroidManifest.xml中使用<data>
元素。设置意图筛选器。<data>
元素,您将能够创建自己的方案。
下面是一个简短的例子:
<activity android:name=".MyUriActivity"> <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="myapp" android:host="path" /> </intent-filter></activity>
根据隐式意图的工作方式,您还需要定义至少一个操作和一个类别;这里我选择视图作为操作(尽管它可以是任何操作),并确保添加默认类别(因为所有隐式意图都需要这样做)。还请注意,我是如何添加可浏览类别的-这不是必要的,但它将允许您的URI从浏览器(一个漂亮的特性)中开放。
![?](http://img1.sycdn.imooc.com/533e4d00000171e602000200-100-100.jpg)
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
myapp://path/to/what/i/want?keyOne=valueOne&keyTwo=valueTwo
Intent intent = getIntent();if (Intent.ACTION_VIEW.equals(intent.getAction())) { Uri uri = intent.getData(); String valueOne = uri.getQueryParameter("keyOne"); String valueTwo = uri.getQueryParameter("keyTwo");}
![?](http://img1.sycdn.imooc.com/533e4c7b00013f3c02400205-100-100.jpg)
心有法竹
TA贡献1866条经验 获得超5个赞
我强烈建议你不要制定自己的计划。这违反了URI方案的Web标准,后者试图严格控制这些名称是有理由的-以避免不同实体之间的名称冲突。一旦你把一个链接到你的计划在一个网站,你已经把这个小名字到整个互联网的名称空间,并应遵循这些标准。
- 3 回答
- 0 关注
- 444 浏览
添加回答
举报
0/150
提交
取消