使用移动网页检测设备上是不是已安装 Android 应用 - PHP 和 JS

Posted

技术标签:

【中文标题】使用移动网页检测设备上是不是已安装 Android 应用 - PHP 和 JS【英文标题】:Detect if Android app has been installed on the device using a mobile web page - PHP and JS使用移动网页检测设备上是否已安装 Android 应用 - PHP 和 JS 【发布时间】:2012-10-03 03:12:30 【问题描述】:

我有一个这样的要求,android Pit 应用商店已经实现了类似的要求。

我需要使用移动网页(php 和 JS)检查设备上是否已安装 Android 应用,如果已安装,请立即启动应用。

这些是安卓坑使用的中间页面。

未安装应用时 - http://www.androidpit.com/en/android/market/app-center-mobile?pname=com.ocito.laredoute

应用已安装时 - http://www.androidpit.com/en/qrdl/com.mobage.ww.a692.Bahamut_Android

有人知道如何实现吗?

【问题讨论】:

androidpit 是否知道已安装的应用程序不是通过 androidpit 本身安装或标记为在 androidpit 用户帐户中安装的?我的第一个猜测是,他们正在检查自己的数据库而不是设备本身。 没有。不是这样的,它有应用程序中心应用程序,因此他们检查该应用程序是否已安装。只有我也需要相同的场景。 就像我猜的那样,他们检查自己的数据库,该数据库通过他们的应用中心应用程序提供。 我有一些链接,***.com/questions/2958701/… ***.com/questions/3469908/… gist.github.com/2662899 【参考方案1】:

幸运的是,出于明显的隐私原因,这是不可能的。

您可以做的最接近的做法是在应用程序中,为某个 URL 结构创建一个具有 <intent-filter> 的活动,并在移动网站中创建一个指向匹配 URL 的链接。

如果用户单击链接并安装了应用程序,则该活动将成为用户的选择器选项。

如果用户单击该链接但未安装应用程序,或者他们从选择器中选择坚持使用 Web 浏览器,则将显示该 URL 处存在的任何网页(例如,如何下载应用程序的说明) .

【讨论】:

@Unicorn:如果未安装应用程序,单击链接将在 URL 上打开常规 Web 浏览器。假设您控制 URL(例如,它指向您的 Web 服务器),您可以让该 URL 返回一个网页,该网页解释了下载您的应用程序的优点,甚至可能带有指向它的 market: 链接。但是,即使安装了应用程序,用户仍有可能看到该网页,因为他们可能会在选择器中选择 Web 浏览器,而不是选择您的应用程序。因此,请确保该页面上的散文涵盖了这种可能性。【参考方案2】:

有一种方法可以实现这一点。找到this答案

出于安全和隐私原因,您无法检测是否安装了特定应用程序。但是,如果它已安装,您可以打开应用程序;如果未安装,您可以打开其 Google Play 页面。

为此,您必须在应用的主要活动上创建一个意图过滤器,以便在调用给定 URL 时打开它。像这样:

<activity android:name=".MainActivity >
    <intent-filter>
        <data
            android:host="www.myurl.com"
            android:pathPrefix="/openmyapp"
            android:scheme="http" >
        </data>

        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.VIEW" />
    </intent-filter>
</activity> 

说明:当用户导航到http://www.myurl.com/openmyapp时,如果安装了应用,则会创建一个intent并显示Activity。

但是如果用户没有安装应用程序怎么办?然后你需要在你的http://www.myurl.com/openmyapp/index.html 上创建一个重定向页面。当用户到达此地址时,您的服务器必须重定向到 market://details?id=com.your.app.package。

这样,当用户导航到http://www.myurl.com/openmyapp 后没有创建 Intent 时,Web 服务器将调用另一个 URL。反过来,该 URL 将在设备上直接在应用页面上打开 Google Play。

【讨论】:

【参考方案3】:

如果发生

<data
    android:host="www.myurl.com"
    android:pathPrefix="/openmyapp"
    android:scheme="http" >
</data>

它会询问用户通过哪种方式打开内容。

为避免这种情况或避免将您的应用程序连接到某个 url,您可以使用 PHP 和 JS 执行另一个技巧。

    您必须像这样在应用的主要活动上创建一个意图过滤器:
<intent-filter android:label="filter_react_native">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="MyCustomScheme" android:host="MyCustomHost" />
</intent-filter>
    创建 PHP 文件 redirect_to_app.php,如果用户安装了应用程序,它将起作用。
<?php
header('Location: MyCustomScheme://MyCustomHost');
    创建 HTML/PHP 文件 check_redirect_to_app.php,必须向尚未安装您的应用的用户显示该文件。
...
<a href="https://play.google.com/store/apps/details?id=YOUR_APP_PACKAGE_NAME">Please install the application</a>
...

<script>
    location.href = '...redirect_to_app.php';
</script>
    将用户重定向到check_redirect_to_app.phpcheck_redirect_to_app.php 将尝试自动重定向到 MyCustomScheme://MyCustomHost。如果找不到这样的应用程序,它将继续显示check_redirect_to_app.php 内容。

【讨论】:

请注意:location.href = 'MyCustomScheme://MyCustomHost'; 不起作用,所以redirect_to_app.php 是必需的。【参考方案4】:

您可以使用手机上的浏览器执行此操作

 intent://scan/#Intent;scheme=***ofclans;package=com.supercell.***ofclans;S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.supercell.***ofclans&amp;%26referrer%3Dkinlan;end

 intent://scan/#Intent;scheme=vnd.youtube://www.youtube.com/watch?v=QXhoNI4O99A;package=com.google.android.youtube;S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.google.android.youtube&amp;%26referrer%3Dkinlan;end

you can try this too

相关应用程序必须在 AndroidManifest 中包含该方案 种族冲突// 或其他方案

【讨论】:

【参考方案5】:

有一个更好的技巧。您将查看 URL 是否返回 404,表示未找到。如果没有安装应用程序,URL 将不起作用。

【讨论】:

以上是关于使用移动网页检测设备上是不是已安装 Android 应用 - PHP 和 JS的主要内容,如果未能解决你的问题,请参考以下文章

移动设备上显示的网页已更改和压缩(与桌面浏览器不同)

网页代码 JS代码 检测手机或是Pad设备 是不是安装某软件 之后做相应的跳转

Android开发:检测手机上是不是安装该App

Android - 如何在设备上安装签名的 APK?

无法确定 Android 设备上是不是安装了 Google Play 商店

如何在移动设备上调试网页