In Android Studio Create application Shortcut and uninstall programmatically
Android
application
ShortCut
APK
Android Studio
- By Code solution
- Jan 20th, 2021
- 0 comments
- 2
Nowadays many android apps installs a shortcut on home screen when you install the app and run it for the first time. This is a nice strategy to engage user by compiling them to use your app. Most of times when a user install an app, the app is deep buried in list of apps making it almost difficult to discover. So its always a good idea to make a shortcut right on home screen.
Creating New Project
- Create a new project in Android Studio from File ⇒ New Project. When selecting Empty Activity and proceed.
Choosing the Colors
- Open colors.xml located under res ⇒ values and add the below color values.
colors.XML
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#008577</color> <color name="colorPrimaryDark">#00574B</color> <color name="colorAccent">#D81B60</color> </resources>
- Open Style.xml located under res ⇒ values and add the below values.
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> </resources>
- add permission INSTALL_SHORTCUT to android manifest xml.
<uses-permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission
android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
- Create four XML layouts named activity_main.xml under res ⇒ layouts.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/buttonAddShortcut" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Add Shortcut" /> <Button android:id="@+id/buttonRemoveShortcut" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Remove Shortcut" /> </LinearLayout>
- Open MenuActivity.java and modify the code as below.
package com.example.appshortcut; import android.Manifest; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.preference.PreferenceManager; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { public static final int REQUEST_ID_MULTIPLE_PERMISSIONS = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Run time permission if (checkAndRequestPermissions()) { // carry on the normal flow, as the case of permissions granted. } Button add = (Button) findViewById(R.id.buttonAddShortcut); add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addShortcut(); //Add shortcut on Home screen } }); //Add listener to remove shortcut button Button remove = (Button) findViewById(R.id.buttonRemoveShortcut); remove.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { removeShortcut(); //Remove shortcut from Home screen } }); } private boolean checkAndRequestPermissions() { int Install = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.INSTALL_SHORTCUT); int Uninstall = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.UNINSTALL_SHORTCUT); List<String> listPermissionsNeeded = new ArrayList<>(); if (Install != PackageManager.PERMISSION_GRANTED) { listPermissionsNeeded.add(Manifest.permission.INSTALL_SHORTCUT); } if (Uninstall != PackageManager.PERMISSION_GRANTED) { listPermissionsNeeded.add(Manifest.permission.UNINSTALL_SHORTCUT); } if (!listPermissionsNeeded.isEmpty()) { ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), REQUEST_ID_MULTIPLE_PERMISSIONS); return false; } return true; } private void addShortcut() { //Adding shortcut for MainActivity //on Home screen Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class); shortcutIntent.setAction(Intent.ACTION_MAIN); Intent addIntent = new Intent(); addIntent .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Codesolution"); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher_background)); addIntent .setAction("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); } private void removeShortcut() { //Deleting shortcut for MainActivity //on Home screen Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class); shortcutIntent.setAction(Intent.ACTION_MAIN); Intent addIntent = new Intent(); addIntent .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Codesolution"); addIntent .setAction("com.android.launcher.action.UNINSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); } }
- After Finally open AndroidManifest.XML and add code.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.appshortcut"> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".SecondActivity"></activity> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" /> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Note : This Method work only android version lower than marshmallow.
Thankyou