Reputation: 2551
I have a requirement like this and something similar to that has been implemented by Android Pit app-store.
I need to check if the Android app has been installed on the device using a mobile web page (PHP and JS), and if installed launch the app immediately.
These are the intermediate pages used by Android pit.
When app has not been installed - http://www.androidpit.com/en/android/market/app-center-mobile?pname=com.ocito.laredoute
When app has been already installed - http://www.androidpit.com/en/qrdl/com.mobage.ww.a692.Bahamut_Android
Does anyone know how to implement this?
Upvotes: 15
Views: 72054
Reputation: 1144
You can do this using the browser on your phone
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&%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&%26referrer%3Dkinlan;end
the application in question must have the scheme in the AndroidManifest clash of clans// or other scheme
Upvotes: 1
Reputation: 2146
there's a better trick. you are going to see if URL returns a 404, means not found. Where URL will not work if there is no app installed.
Upvotes: 0
Reputation: 1253
In case of
<data
android:host="www.myurl.com"
android:pathPrefix="/openmyapp"
android:scheme="http" >
</data>
it will ask user by which way open the content.
To avoid this or to avoid connect your app to some url you can do another trick to implement this using PHP and 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>
redirect_to_app.php
which will work in case user have the app installed.<?php
header('Location: MyCustomScheme://MyCustomHost');
check_redirect_to_app.php
which must be shown for users which didn't install your app yet....
<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.php
. check_redirect_to_app.php
will try to redirect to MyCustomScheme://MyCustomHost
automatically. In case it will not find such a app, it will coninue to show check_redirect_to_app.php
content.Upvotes: 1
Reputation: 2461
There is a way to achieve this. Found this answer
You cannot detect if a particular application is installed, for security and privacy reasons. But you can do a trick to open the app if it's installed or open its Google Play page if it isn't.
To do that, you must create an intent-filter on your app's main activity, to open it when a given URL is called. Like this:
<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>
Explaining: when the user navigates to http://www.myurl.com/openmyapp, if the app is installed, an intent will be created and the Activity will be shown.
But what if the user doesn't have the app installed? Then you need to create a redirect page on your http://www.myurl.com/openmyapp/index.html. When the user reaches this address, your server must redirect to market://details?id=com.your.app.package.
This way, when no Intent is created after the user navigates to http://www.myurl.com/openmyapp, the web server will call another URL. That URL, in turn, will open Google Play on the device, directly on the app's page.
Upvotes: 22
Reputation: 1006584
Fortunately, this is not possible, for obvious privacy reasons.
The closest that you can do is in the application, have an activity that has an <intent-filter>
for some URL structure, and have a link in the mobile Web site to a matching URL.
If the user clicks the link and the app is installed, the activity will be a chooser option for the user.
If the user clicks the link and the app is not installed, or they choose to stick with their Web browser from the chooser, whatever Web page exists at that URL will be displayed (E.g., instructions of how to download the app).
Upvotes: 22