How to programmatically create a shortcut of another app in Android?

后端 未结 3 1254
说谎
说谎 2021-01-07 08:24

Suppose, I have some Android app which helps users to install some other apps. Is there any way to create a shortcut of this apps on home screen? Can I also specify the posi

相关标签:
3条回答
  • 2021-01-07 08:41

    A bit improved version: we are checking if the shortcut has been already created and must not be created if user remove it from the screen

    final static private String PREF_KEY_SHORTCUT_ADDED = "PREF_KEY_SHORTCUT_ADDED";
    
        @Override
        public void onStart(){
            super.onStart();
    
    // Checking if ShortCut was already added
            sharedPreferences = getPreferences(MODE_PRIVATE);
            boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean(PREF_KEY_SHORTCUT_ADDED, false);
            if (!shortCutWasAlreadyAdded) createShortcutIcon();
    
    
        } // end onStart
    
    
        // Creates shortcut on Android widget screen
        private void createShortcutIcon(){
    
            Intent shortcutIntent = new Intent(getApplicationContext(), Splash.class);
            shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
            Intent addIntent = new Intent();
            addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
            addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
    
            addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(),R.drawable.ic_launcher));
    
            addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
            getApplicationContext().sendBroadcast(addIntent);
    
            // Remembering that Shortcut was already added
            SharedPreferences.Editor editor = sharedPreferences.edit();
            editor.putBoolean(PREF_KEY_SHORTCUT_ADDED, true);
            editor.commit();
    
            objPublicDelegate.showToast(getString(R.string.app_name)+ " shortcut created on screen.");
    
        } // end createShortcutIcon
    
    0 讨论(0)
  • 2021-01-07 08:41

    There is no such API on Android.

    0 讨论(0)
  • 2021-01-07 08:47

    Try this :

    public void createShortCut() {
        Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
        shortcutintent.putExtra("duplicate", false);
        shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcutname));
        Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext, R.drawable.icon);
        shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
        shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent("com.whatsapp"));
        sendBroadcast(shortcutintent);
    }
    
    0 讨论(0)
提交回复
热议问题