Android 从主屏幕删除快捷方式

Android 从主屏幕删除快捷方式,android,shortcut,android-package-managers,Android,Shortcut,Android Package Managers,我正在尝试删除android中所有屏幕上的所有快捷方式。我成功过一次,但不知怎么的,在下一次执行后,它停止了工作。我能请你帮我找出问题出在哪里吗?没有堆栈,没有错误,只需单击,什么也没有发生。当我第一次成功的时候,我得到了很多祝酒词来形容“X被移除了” 这是我的密码: private void method0() { final Intent anyIntent = new Intent(Intent.ACTION_MAIN, null); List<ResolveInfo

我正在尝试删除android中所有屏幕上的所有快捷方式。我成功过一次,但不知怎么的,在下一次执行后,它停止了工作。我能请你帮我找出问题出在哪里吗?没有堆栈,没有错误,只需单击,什么也没有发生。当我第一次成功的时候,我得到了很多祝酒词来形容“X被移除了”

这是我的密码:

private void method0() {
    final Intent anyIntent = new Intent(Intent.ACTION_MAIN, null);
    List<ResolveInfo> pkgAppsList = this.getPackageManager().queryIntentActivities(anyIntent, 0);
    for (final ResolveInfo resolveInfo : pkgAppsList) {
                method(resolveInfo);
    }
}

private void method(ResolveInfo resolveInfo) {
    try {
        final PackageManager pm = getPackageManager();
        String packageName = ((ActivityInfo) resolveInfo.activityInfo).packageName;
        String appName = (String) resolveInfo.loadLabel(pm);
        ComponentName componentName = new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName, resolveInfo.activityInfo.name);

        if (packageName.startsWith("com.google") || (packageName.startsWith("com.android")))
            return;

        final Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
        shortcutIntent.setComponent(new ComponentName(packageName, componentName.getClassName()));

        Intent intent = new Intent();
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, appName);
        intent.setComponent(new ComponentName(packageName, componentName.getClassName()));
        intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");

        sendBroadcast(intent, null);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
private void method0(){
最终意图anyIntent=新意图(Intent.ACTION\u MAIN,空);
List pkgAppsList=this.getPackageManager().QueryInputActivities(anyIntent,0);
对于(最终解析信息解析信息:pkgAppsList){
方法(resolveInfo);
}
}
私有无效方法(ResolveInfo ResolveInfo){
试一试{
最终PackageManager pm=getPackageManager();
字符串packageName=((ActivityInfo)resolveInfo.ActivityInfo).packageName;
字符串appName=(字符串)resolveInfo.loadLabel(pm);
ComponentName ComponentName=新组件名(resolveInfo.activityInfo.applicationInfo.packageName,resolveInfo.activityInfo.name);
if(packageName.startsWith(“com.google”)| |(packageName.startsWith(“com.android”))
返回;
最终意图Shortcutivent=新意图(Intent.ACTION\u MAIN);
setComponent(新的ComponentName(packageName,ComponentName.getClassName());
意图=新意图();
intent.putExtra(intent.EXTRA\u SHORTCUT\u intent,shortcuttent);
intent.putExtra(intent.EXTRA\u快捷方式\u名称,appName);
setComponent(新的ComponentName(packageName,ComponentName.getClassName());
intent.setAction(“com.android.launcher.action.UNINSTALL_快捷方式”);
发送广播(意图,空);
}捕获(例外e){
e、 printStackTrace();
}
}
我还添加了许可

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


我使用的是Nexus4的标准启动器-谷歌网站上的原始图像ROM。

看起来你没有使用默认的库存android启动器


请检查此项。希望有帮助。

请看此项。不需要任何主屏幕实现来支持您列出的代码。@Commonware意味着启动程序应用程序不需要添加功能来处理卸载快捷方式的意图,也不需要从主屏幕删除快捷方式。我想在android的原始rom上使用没有任何额外的发射器,因为我说它工作过一次,但不知怎的它停止了工作。我说的是屏幕上的所有快捷方式,不仅仅是当前应用的快捷方式。你每次都能删除当前应用的快捷方式吗?同时检查一下这个?