Search code examples
androidshortcut

creating android app shortcut on the home screen


I need to add a shortcut for my app on the home screen (programmatically). I know that the app store do this by default, but for start, the app won't be on the google app store. I searched a lot, and found basically the same lines of code over and over, and it doesn't seem to work for me.

the code I used: in the manifest:

<activity android:name=".MainScreenActivity" android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

in the onCreate method I called the function that does the following:

    private boolean createShortcut()
{
    //create shortcut intent
    Intent shortcutIntent = new Intent(getApplicationContext(),MainScreenActivity.class);
    shortcutIntent.setAction(Intent.ACTION_MAIN);

    //create intent to add and define the shortcut
    Intent addingIntent = new Intent();
    addingIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcutIntent);
    addingIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"SenseGuard");
    addingIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(),R.drawable.peak_detection_icon));
    addingIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");

    getApplicationContext().sendBroadcast(addingIntent);
}

I tried switching "getApplicationContext()" to "this". I tried with an actual tablet and on an emulator but I can't get it to work.


Solution

  • Do like This:

    Step 1:

    Update your manifest.xml :

      <uses-permission
        android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    

    Step 2:

    in your MainActivity.java create addShortcut() method and in it`s block put this code :

    private void addShourcut(){
      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 , "Convertor");
      addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE ,
        Intent.ShortcutIconResource.fromContext(getApplicationContext() , R.mipmap.ic_launcher));
      addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
      addIntent.putExtra("duplicate" , false);
      getApplicationContext().sendBroadcast(addIntent);
    
    }
    

    Step3:

    set onClickListener for your view that be create shortcut :

    img_pin = (ImageView) findViewById(R.id.img_pin);
    img_pin.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
    
        addShourcut();
        Toast.makeText(MainActivity.this, "shortcut created !", Toast.LENGTH_SHORT).show();
    
      }
    });
    

    This is worked for me ... happy codinngggg...:)