Обнаруживать, если Android-приложение установлено на устройстве с помощью мобильной веб-страницы - PHP и JS

У меня есть такое требование, и что-то подобное этому было реализовано в Android-магазине Android Pit.

Мне нужно проверить, установлено ли приложение Android на устройстве с помощью мобильной веб-страницы (PHP и JS), и если приложение установлено немедленно.

Это промежуточные страницы, используемые ядром Android.

Когда приложение не установлено - http://www.androidpit.com/en/android/market/app-center-mobile?pname=com.ocito.laredoute

Когда приложение уже установлено - http://www.androidpit.com/ru/qrdl/com.mobage.ww.a692.Bahamut_Android

Кто-нибудь знает, как это реализовать?

Ответ 1

К счастью, это невозможно, по очевидным причинам конфиденциальности.

Самое близкое, что вы можете сделать, это приложение, у которого есть <intent-filter> для некоторой структуры URL-адреса и есть ссылка на мобильном веб-сайте на соответствующий URL-адрес.

Если пользователь нажимает на ссылку и приложение установлено, это будет выбор для пользователя.

Если пользователь нажимает на ссылку и приложение не установлено, или они предпочитают придерживаться своего веб-браузера от выбора, какая-либо веб-страница будет существовать на этом URL-адресе (например, инструкции по загрузке приложения).

Ответ 2

Есть способ достичь этого. Нашел этот ответ

Вы не можете определить, установлено ли какое-либо конкретное приложение по соображениям безопасности и конфиденциальности. Но вы можете сделать трюк, чтобы открыть приложение, если оно установлено или открывает страницу 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, если приложение установлено, будет создано намерение и будет показано действие.

Но что, если у пользователя нет установленного приложения? Затем вам нужно создать страницу переадресации на http://www.myurl.com/openmyapp/index.html. Когда пользователь достигает этого адреса, ваш сервер должен перенаправить на рынок://details? Id = com.your.app.package.

Таким образом, когда не будет создано Intent после того, как пользователь перейдет на http://www.myurl.com/openmyapp, веб-сервер вызовет другой URL-адрес. Этот URL, в свою очередь, откроет Google Play на устройстве прямо на странице приложения.

Ответ 3

В случае

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

он спросит пользователя, каким образом открыть контент.

enter image description here

Чтобы избежать этого или избежать подключения вашего приложения к некоторому URL, вы можете сделать еще один трюк, чтобы реализовать это с помощью 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="#" onclick="location.href='https://play.google.com/store/apps/details?id=YOUR_APP_PACKAGE_NAME'; return false;">Please the install application</a>
...

<script>
    location.href = '...redirect_to_app.php';
</script>
  1. Перенаправьте пользователей на check_redirect_to_app.php. check_redirect_to_app.php попытается перенаправить на MyCustomScheme://MyCustomHost автоматически. В случае, если оно не найдет такое приложение, оно будет продолжать показывать содержимое check_redirect_to_app.php.