如何在卸载时自动从主屏幕删除应用程序快捷方式?

时间:2014-09-15 05:55:02

标签: android uninstall shortcut

我知道如何以编程方式添加或删除我的Android应用程序快捷方式到主屏幕? 但我不知道如何删除应用程序卸载时的快捷方式

您知道在以编程方式创建快捷方式时,在用户卸载应用程序后,您的快捷方式仍保留在主屏幕中,并且不会打开任何应用程序。

我怎么知道我的应用程序是否正在卸载并删除当时的快捷方式?

或者我想知道应用程序在卸载时是否有一种方法可以调用我的快捷方式删除方法?

感谢,

3 个答案:

答案 0 :(得分:1)

Launcher应用程序负责创建/删除应用程序快捷方式,而不是Play商店。 如果要删除应用程序快捷方式,可以按如下方式广播意图:

PackageManager pm = context.getPackageManager();
        // Intent to Start activity
        ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
        if (info != null) {
            Intent shortcutIntent = pm
                    .getLaunchIntentForPackage(packageName);
            if (shortcutIntent != null) {
                final Intent removeIntent = new Intent();
                removeIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
                        shortcutIntent);
                removeIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,
                        info.loadLabel(pm));
                removeIntent.putExtra("duplicate", false);

                removeIntent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");
                context.sendBroadcast(removeIntent);
            }
        }

发送此广播后,将删除应用程序快捷方式。 请检查第三方应用程序是否有权删除应用程序快捷方式。

希望这会对你有所帮助。

答案 1 :(得分:0)

我认为 Play商店会在你卸载应用程序时处理这个,所有快捷方式都将被删除你不需要处理这个

答案 2 :(得分:0)

BroadcastReceiver mApplicationsReceiver = new ApplicationsIntentReceiver();

卸载应用后首先注册意向接收器,

IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
registerReceiver(mApplicationsReceiver, filter);

然后在BroadcastReceiver上做你想做的事,

private class ApplicationsIntentReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
        // Toast.makeText(context, "APP CHANGED", Toast.LENGTH_LONG).show();
        // remove the shortcut from the home screen
    }
}