小编典典

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

all

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

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

必须由我自己的应用程序或服务处理。请注意,该方案是"myapp"和不是"http",或"ftp"。这正是我的意图:为 Android
操作系统全局定义我自己的 URI 架构。这可能吗?

这有点类似于某些程序已经在 Windows 系统上所做的事情,例如 Skype ( skype://) 或任何 torrent 下载程序 (
torrent://)。


阅读 46

收藏
2022-08-16

共1个答案

小编典典

这是很有可能的;您使用<data>元素在 AndroidManifest.xml 中定义 URI
方案。您设置了一个填充了元素的意图过滤器<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>

根据隐式意图的工作方式,您还需要定义至少一个动作和一个类别;在这里,我选择了 VIEW 作为动作(尽管它可以是任何东西),并确保添加 DEFAULT
类别(因为这是所有隐式意图所必需的)。还要注意我是如何添加 BROWSABLE 类别的 - 这不是必需的,但它允许您的 URI
可以从浏览器打开(一个漂亮的功能)。

2022-08-16