How to remove application shortcut from home screen on uninstall automatically?

后端 未结 3 417
一向
一向 2021-01-13 00:18

I\'m developing an application that should add its shortcut to home screen after installation and remove it after the application is being uninstalled. The application will

相关标签:
3条回答
  • 2021-01-13 00:42

    I don't believe you can do this.

    Firstly because you cannot uninstall applications that are pre-installed on the device firmware — they exist on the /system partition which is a read-only filesystem.

    Secondly, as you note, your application receives no notification that it is being uninstalled.

    If users may not want to use your application, won't they just ignore the application icon, much like I do for a couple of pre-installed apps on my phone?


    Edit:
    If you are going to pre-install apps (but not on the firmware as commonsware.com notes), you could pre-install two APKs. One of which has no launcher and consists only of a broadcast receiver which handles the ACTION_PACKAGE_REMOVED event and calls UNINSTALL_SHORTCUT.

    I don't believe there is any explicit permission checks that require a shortcut to be removed by the same app that added it, but you could get around that anyway by using a sharedUserId for both APKs.

    0 讨论(0)
  • 2021-01-13 00:42

    What you are describing is a limitation of the Home screen. The next version of Launcher2 addresses this issue and automatically removes widgets and shortcuts associated with an app. Some shortcuts might be left though if no association can be found (if your app creates a shortcut to the music player for instance.)

    0 讨论(0)
  • 2021-01-13 00:46

    Seems that you don't use install_shortcut intent in right way. Probably you create an intent without any parameters. You should to create intent with an action Intent.ACTION_MAIN param.

    Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
    shortcutIntent.setClassName(this, this.getClass().getName());
    
    Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
    Parcelable iconResource = Intent.ShortcutIconResource.fromContext(
                this,  R.drawable.launcher_icon);
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
    sendBroadcast(intent);
    
    0 讨论(0)
提交回复
热议问题