我在这里阅读了几个自定义URI帖子,并尝试创建一个有效的URI方案。但是,它不起作用。 XML下面的代码:
<activity android:name="testhing.ResetPasswordActivity"
android:label="@string/title_activity_reset_password"
android:parentActivityName="testthing.LoginActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="restthing.LoginActivity" />
<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="TESTTHING" android:host="ForgottenPassword" />
</intent-filter>
</activity>
如果我尝试在浏览器中导航到“TESTHING:// ForgottenPassword”,它会运行Google搜索,但不会打开视图。我在电子邮件中有一个链接'TESTHING:// ForgottenPassword?token = 12345',但此链接甚至不显示为可点击。它就像没有注册自定义URI方案一样。我的语法有问题吗?
答案 0 :(得分:1)
如果我尝试导航到&#39; TESTHING:// ForgottenPassword&#39;在浏览器中,它运行谷歌搜索但不打开视图。
Android有很多浏览器。当您在地址栏中输入PackageManager
活动时,有些人可能会尝试使用Uri
来查看此随机字符系列是否恰好是ACTION_VIEW
。没有要求浏览器这样做。
我在电子邮件中有一个链接是&#39; TESTHING:// ForgottenPassword?token = 12345&#39;,但此链接甚至不显示为可点击。
Android有很多电子邮件客户端。理想情况下,电子邮件客户端在查看链接时,至少会尝试使用链接声明链接的ACTION_VIEW
操作。再一次,没有要求电子邮件客户端这样做。
我的语法有问题吗?
我建议您使用全部小写为您的计划和主机。例如,您的电子邮件客户端可能正在应用假定小写方案的正则表达式,因为这是写入URI方案的正常方式。
总的来说,自定义方案在Android上只有一个兑换价值:它们不太可能与其他任何东西发生冲突并触发选择器。如果您使用http
作为您的计划,则更有可能让应用识别您的链接,并使用&#34;此应用处理这些网址&#34;做法。但是,现在,这将触发选择器,用户可以选择浏览器或应用程序。这就是为什么在Android M中,他们正在添加在服务器上提供您自己拥有的证据的能力。 URL以及您希望这些链接直接启动到您的应用并绕过选择器。