1

我想知道我们可以在 SMS 消息中传递 Uri 而不是在 Android 中传递超链接。我正在考虑以下场景:
1)我打开一个 DDMS
2)在模拟器控制面板中,我正在发送一条短信为“http://www.google.com”
3)短信到达模拟器。
4) 我打开 SMS,消息 http://www.google.com 有一个超链接,如下所示。
5) 我点击该链接,它会重定向到一个浏览器,在其中打开我的 Google 网站。

考虑另一种情况:
1)我打开一个 DDMS
2)在模拟器控制面板中,我正在发送一条短信为“myscheme://com.android.myhost/mypath”
3)短信到达模拟器。
4) 我打开 SMS,它显示消息 myscheme://com.android.myhost/mypath
5) 我单击链接,它重定向到使用上述 Uri 注册的应用程序。

我该怎么做。有什么建议么?

问候和感谢
Sohaib Rahman

4

1 回答 1

2

我不会那样做。不要发明自己的自定义方案。

相反,只要您安装了一个声称支持该特定 URL 结构的应用程序,您的第一种方法就可以正常工作。

例如,如果您安装了 Barcode Scanner,http://zxing.appspot.com/scan一旦用户单击链接,类似 URL 将启动 Barcode Scanner 应用程序。这是因为 Barcode Scanner 有一个包含以下<intent-filter>元素的活动:

  <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="http" android:host="zxing.appspot.com" android:path="/scan"/>
  </intent-filter>

与自定义方案相比,这种方法有两个好处:

  1. IETF 的成员不会因为创建未经授权的计划而威胁要打破你的膝盖骨。:-)

  2. 该链接仍然有效,即使对于未使用 Android 或未安装 Barcode Scanner 的收件人也是如此。如果您从用于查看此 SO 答案的 Web 浏览器访问http://zxing.appspot.com/scan,您将看到它指向一个有效的网页,Android 设备用户可以从中单击下载条形码扫描器。您的自定义方案方法创建的 URL 对于其他没有安装您的应用程序的人完全没有用(例如,有人试图将您的 SMS 转发给其他人)。

现在,某种水果味的移动操作系统确实鼓励创建您自己的自定义方案,原因我无法理解。如果您真的确定要这样做,则可以在其中使用<intent-filter>带有您的方案的 an:

  <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="zxing" android:host="scan" android:path="/"/>
  </intent-filter>
于 2012-07-04T11:54:59.987 回答