0

问题描述

我正在编写 Android 应用程序,当用户在 Android 中打开标准网络浏览器并导航到我的网页(http://mywebpage.com)并按下某个按钮(测试按钮)时,我需要向我的应用程序添加一些功能页面必须检测我的应用程序是否已安装在 Android 手机上。

我做什么来解决这个问题

我已经阅读了很多文章并在这里问了一些问题,并且我知道我无法做某事以使我的网页可以理解我的应用程序是否安装在手机上,我可以做的一件事是在其中编写一些代码清单文件

<a href="my.special.scheme://other/parameters/here">

<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="my.special.scheme" />
</intent-filter>

但这对我来说还不够,因为当用户按下我网站中的链接时,手机上没有安装应用程序,它会给出 404 错误,说没有这样的 URLmy.special.scheme://other/parameters/here我想为此找到另一个解决方案,这里是我思考。

问题的解决方案

<a href="my.special.scheme://other/parameters/here">当用户按下链接并显示 404 错误时,我如何从我的网站抛出一些异常。我的意思是我可以进行一些 AJAX 或 JAVA 脚本调用以确定该 url 引用无效链接并在这种情况下重定向到另一个链接。

问题2的解决方案

我使用这样的意图过滤器

<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="commonsware.com" android:path="LaunchApp"/>
</intent-filter>

并在这样的网页上放置一个链接

<a href="commonsware.com/LaunchApp">Start App</a>.

问题

当真实 URL 不存在或它给出 404 错误时,我如何重定向到我指定的 URL。请给我一个例子,因为我不擅长 AJAX 和 JAVA 脚本编码

4

1 回答 1

2

根据 Diane Hackborn 的回答,我已经做了类似的事情

请不要使用方案,除非它是您已注册的方案。方案对宇宙来说是全球性的,由于您将通过您的网页将其发布到宇宙中,因此您希望遵循它们的规则。

您可以采取的另一种方法是创建一个您想要启动的 Intent,并打印 Intent.toUri() 的结果以获取要在链接中使用的字符串。(这应该是一个意图:URI。)然后您可能只想按照该意图将使用的标准命名约定进行自己的操作。如果需要,您甚至可以使用 Intent.setPackage() 确保只有您的应用程序可以从链接启动。(请注意,出于安全原因,您不能使用 Intent.setComponent()。)

我构建了一个 Intent 来启动所需的活动,然后,如前所述,将 Intent 转换为 URI 并将其打印到 stdout。intent:我在我的网页中使用的这个 URI(它以一个方案开头)如下所示:

<a href="intent:/...">Start App</a>.

如果安装了应用程序,这将启动 Activity,否则它会打开 Play-Store 应用程序,已经显示了应用程序的页面(如果在 Play-Store 中找到)供用户下载和安装。

于 2012-09-15T06:35:53.920 回答