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

时间:2012-10-12 10:07:24

标签: php javascript android jquery

我有这样的要求,类似于Android Pit app-store实现的那样。

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

这些是Android pit使用的中间页面。

尚未安装应用 - 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

有谁知道如何实现这个?

5 个答案:

答案 0 :(得分:16)

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

您可以做的最接近的是,在应用程序中,有一个活动对某些URL结构有<intent-filter>,并且在移动网站上有一个链接到匹配的URL。

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

如果用户点击链接并且未安装应用程序,或者他们选择使用选择器中的Web浏览器,则会显示该URL上存在的任何网页(例如,如何下载应用程序的说明)

答案 1 :(得分:13)

有一种方法可以实现这一目标。找到this回答

出于安全和隐私原因,您无法检测是否安装了特定应用程序。但是如果安装了应用程序,你就可以开一个技巧,如果没有,可以打开它。

为此,您必须在应用的主要活动上创建一个intent-filter,以便在调用给定的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时,如果安装了应用,则会创建一个意图并显示活动。

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

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

答案 2 :(得分:0)

如果是

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

它将询问用户以哪种方式打开内容。

enter image description here

为避免这种情况或避免将您的应用程序连接到某些网址,您可以做另一种技巧来使用PHP和JS来实现。

  1. 您必须像这样在应用程序的主要活动上创建一个意图过滤器:
<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>
  1. 创建PHP文件redirect_to_app.php,该文件将在用户安装应用程序的情况下起作用。
<?php
header('Location: MyCustomScheme://MyCustomHost');
  1. 创建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>
  1. 将用户重定向到check_redirect_to_app.phpcheck_redirect_to_app.php将尝试自动重定向到MyCustomScheme://MyCustomHost。万一找不到这样的应用,它将显示check_redirect_to_app.php内容。

答案 3 :(得分:0)

有一个更好的把戏。您将查看URL是否返回404,表示未找到。如果未安装任何应用,URL将不起作用。

答案 4 :(得分:0)

您可以使用手机上的浏览器完成此操作

 intent://scan/#Intent;scheme=clashofclans;package=com.supercell.clashofclans;S.browser_fallback_url=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.supercell.clashofclans&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中具有该方案 种族冲突// 或其他方案