如何在android上实现我自己的URI方案

如何在android上实现我自己的URI方案

假设我想定义一个URI,例如:

myapp://path/to/what/i/want?d=This%20is%20a%20test

必须由我自己的申请或服务来处理。请注意,该计划是"myapp"而不是"http",或"ftp"..这正是我的意图:为Android操作系统在全球范围内定义自己的URI模式。这个是可能的吗?

这在某种程度上类似于某些程序已经做的事情,例如Windows系统,如Skype(skype://)或任何急流下载程序(torrent://).


RISEBY
浏览 445回答 3
3回答

千巷猫影

这是非常可能的;您可以在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从浏览器(一个漂亮的特性)中开放。

海绵宝宝撒

URI示例:myapp://path/to/what/i/want?keyOne=valueOne&keyTwo=valueTwo在你的活动中:Intent&nbsp;intent&nbsp;=&nbsp;getIntent();if&nbsp;(Intent.ACTION_VIEW.equals(intent.getAction()))&nbsp;{ &nbsp;&nbsp;Uri&nbsp;uri&nbsp;=&nbsp;intent.getData(); &nbsp;&nbsp;String&nbsp;valueOne&nbsp;=&nbsp;uri.getQueryParameter("keyOne"); &nbsp;&nbsp;String&nbsp;valueTwo&nbsp;=&nbsp;uri.getQueryParameter("keyTwo");}

心有法竹

我强烈建议你不要制定自己的计划。这违反了URI方案的Web标准,后者试图严格控制这些名称是有理由的-以避免不同实体之间的名称冲突。一旦你把一个链接到你的计划在一个网站,你已经把这个小名字到整个互联网的名称空间,并应遵循这些标准。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android