为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

RISEBY 2019-06-26 15:36:23
如何在android上实现我自己的URI方案假设我想定义一个URI,例如:myapp://path/to/what/i/want?d=This%20is%20a%20test必须由我自己的申请或服务来处理。请注意,该计划是"myapp"而不是"http",或"ftp"..这正是我的意图:为Android操作系统在全球范围内定义自己的URI模式。这个是可能的吗?这在某种程度上类似于某些程序已经做的事情,例如Windows系统,如Skype(skype://)或任何急流下载程序(torrent://).
查看完整描述

3 回答

?
千巷猫影

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从浏览器(一个漂亮的特性)中开放。


查看完整回答
反对 回复 2019-06-26
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

URI示例: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");}


查看完整回答
反对 回复 2019-06-26
?
心有法竹

TA贡献1866条经验 获得超5个赞

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

查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 444 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信