我不会那样做。不要发明自己的自定义方案。
相反,只要您安装了一个声称支持该特定 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>
与自定义方案相比,这种方法有两个好处:
IETF 的成员不会因为创建未经授权的计划而威胁要打破你的膝盖骨。:-)
该链接仍然有效,即使对于未使用 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>