我已经研究了大多数自定义网址方案Q& A,但我找不到可能的答案。
我希望通过点击浏览器中的某个网址(移动设备上的任何网址)启动我的应用,问题是我的指定网址无法修改,因为它也提供IOS应用程序,它看起来像这样: / p>
“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>
注意:我尝试使用/不使用导出:true
答案 0 :(得分:12)
正如CommonsWare所说,我需要创建一个Scheme时给定的URI不是有效的URI,因此该方案不起作用且应用程序没有启动。在解释之后,服务器端人员确信将URI更改为myapp:// ...并且它像魔术一样工作:)。
活动现在看起来像这样:
<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:scheme="myapp" />
</intent-filter>
<!-- End Test for URL scheme -->
</activity>
答案 1 :(得分:1)
这是对URI方案的滥用并且无效。您要传递的HTTP URL是一段数据,因此应该在查询字符串中发送。
myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F
答案 2 :(得分:-1)
您需要使用超链接启动该应用。例如,你设置scheme =&#34; yourpackagename&#34; ,你需要设置一个这样的超链接:yourpackagename:// host,你应该浏览你的浏览器上的超链接。如果你没有主机标签,只需删除它。
<!-- 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="host" android:scheme="yourpackagename" />
</intent-filter>
<!-- End Test for URL scheme -->
如果您的活动有多个方案,则应使用2个或更多方案来指定