【发布时间】:2013-08-07 11:43:49
【问题描述】:
我已经研究了大部分自定义 URL 方案问答,但没有找到可能的答案。
我希望通过单击浏览器中的某个 URL(移动设备上的任何 URL)来启动我的应用程序,问题是我的给定 URL 不能修改,因为它也服务于 IOS 应用程序,它看起来像这样:
"myapp://http://www.name.com/path/path2/"
我不确定如何处理“myapp://http://”并构造一个适当的意图过滤器,我尝试的一切都不起作用。 任何帮助将不胜感激,如果我错过了相关答案,请除了我的道歉。
这是我迄今为止尝试过的:
<activity
android:name="com.myapp.test.SplashScreen"
android:exported="true"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Test for URL scheme -->
<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:host="www.name.com"
android:path="/path/path2/"
android:scheme="http" />
<data
android:host="www.name.com"
android:path="/path/path2/"
android:scheme="https" />
<data android:scheme="myapp" />
</intent-filter>
<!-- End Test for URL scheme -->
</activity>
注意:我试过有/没有exported:true
【问题讨论】:
-
由于这不是一个有效的
Uri结构,我非常怀疑它是否会起作用。更改 iOS 应用程序以使用有效的 URI 会更简单。 -
@CommonsWare 嘿,感谢您的评论。这种URI适用于IOS应用程序,他们通过点击这个链接来打开应用程序。你认为只有“myapp://”或“http://”这样的方案吗?
-
"你认为只有一种方案,如 "myapp://" 或 "http://" 吗?" - 是的。充其量,如果幸运的话,
http://将被视为主机。在最坏的情况下,您的Uri将无法解析。我可以想到其他一些选择。Uri中绝对只有一个方案——Uri类不允许超过一个。 -
我对 RFC 2396 的解读是,他定义了一个不透明的 URI 方案,而方案特定部分看起来像另一个 URI 的事实与 URI 解析器无关。 (此外,建议“只需更改您的 iOS 应用程序”有点花言巧语且无济于事,可能他需要保持兼容性的野外代码。)
标签: android url android-manifest intentfilter url-scheme