Skip to main content

Launching Android application from web browser

Steps to follow :-

1. Define an activity in android manifest file with below intent filters :-

   <activity
            android:name=".LaunchActivityFromBrowser"
            android:configChanges="orientation|keyboardHidden|fontScale|locale|layoutDirection|screenSize|screenLayout|mnc|mcc|navigation"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
            <intent-filter>
               <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                 <action android:name="customAction" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
        </activity>

adding CATEGORY_BROWSABLE means "The activity can be invoked by the browser."

2. Now from the web browser invoke below link,

<a href="intent:#Intent;action=customAction;S.Name="XYZ";end">click to Launch "your app name"</a>

3. Once you invoke the link your activity will be launched with intent having extra as Name="XYZ".

4. You can send data as extras in the  intent for different data types as below :-

'S' - For String 
'B' - Boolean
'b' - Byte
'c' - Character
'd' - Double
'f' - Float
'i' - Integer
'l' - Long
's' - Short

5. If you have defined scheme and host for the activity as below :-

  <activity
            android:name=".LaunchActivityFromBrowser"
            android:configChanges="orientation|keyboardHidden|fontScale|locale|layoutDirection|screenSize|screenLayout|mnc|mcc|navigation"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                 <action android:name="customAction" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:host="test.example.com" android:scheme="http"/>
            </intent-filter>
        </activity>
     
   then use link as below ,
    <a href="intent://test.example.com/#Intent;scheme=http;action=customAction;S.Name="XYZ";end">click to Launch "your app name"</a>

Thanks for reading !! :)

Comments

Popular posts from this blog

Launch an Android application on Bootup

If you want to start an android application on device restarts, you need to listen for BOOT_COMPLETED broadcast in the manifest file and launch the Launcher activity in onreceive of BOOT_COMPLETED broadcast receiver. Follow below steps to launch activity on device boot up :- 1. Register for Boot completed receiver in Android Manifest file. Add below Permission to receive BOOT_COMPLETED broadcast, <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> Register for Boot completed broadcast receiver , <receiver android:name="AppAutostartReceiver" android:enabled="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 2. Add custom Broadcast receiver in the application, public class AppAutostartReceiver extends BroadcastReceiver { @Override public void onReceive(Context cont

Whitelist an android application on android 6.0/Marshmallow

Whitelist wont disable doze mode for your app, however can use network and hold wake lock. Whitelist an android application through code, boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName()); if(!isIgnoringBatteryOptimizations){   Intent intent = new Intent();   intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);   intent.setData(Uri.parse("package:" + getPackageName()));   startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);   }                             Check for the result, @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {     if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {          PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);          boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());          if(isIgnoringBatteryOptimizations){             // Ignoring battery opti