Android 如何在Launcher桌面创建或者删除快捷图标

原创 2015年07月09日 14:33:30

Android 如何在Launcher桌面创建或者删除快捷图标,见如下代码:

    public static void deleteShortcut(String activityName, Context context) {
        Intent shortcutIntent = new Intent();
        shortcutIntent.setClassName(context.getPackageName(), activityName);
        shortcutIntent.addCategory(Intent.CATEGORY_DEFAULT);

        Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, "test_shortcut");
        shortcut.putExtra("duplicate", false); //不允许重复创建
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        //快捷方式的图标
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));

        context.sendBroadcast(shortcut);
    }
    public static void createShortcut(String activityName, Context context) {
        Intent shortcutIntent = new Intent();
        shortcutIntent.setClassName(context.getPackageName(), activityName);
        shortcutIntent.addCategory(Intent.CATEGORY_DEFAULT);

        Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, test_shortcut);
        shortcut.putExtra("duplicate", false); //不允许重复创建
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        //快捷方式的图标
        shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon));

        context.sendBroadcast(shortcut);
    }
    public static boolean hasShortcut(Context context) {
        boolean isInstallShortcut = false;
        final ContentResolver cr = context.getContentResolver();
        final String AUTHORITY = getAuthorityFromPermission(context, "com.android.launcher.permission.READ_SETTINGS");
        if (TextUtils.isEmpty(AUTHORITY)) {
            return false;
        }

        final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/favorites?notify=true");
        Cursor c = cr.query(CONTENT_URI, new String[]{"title", "iconResource"}, "title=?", new String[]{“test_shortcut”}, null);
        if (c != null && c.getCount() > 0) {
            isInstallShortcut = true;
        }
        if (c != null) {
            c.close();
        }

        return isInstallShortcut;
    }
<pre name="code" class="java">    /**
     * android系统桌面的基本信息由一个launcher.db的Sqlite数据库管理,里面有三张表
     * 其中一张表就是favorites。这个db文件一般放在data/data/com.android.launcher(launcher2)文件的databases下
     * 但是对于不同的rom会放在不同的地方
     * 例如MIUI放在data/data/com.miui.home/databases下面
     * htc放在data/data/com.htc.launcher/databases下面
     * @param context
     * @param permission  读取设置的权限  READ_SETTINGS_PERMISSION
     * @return
     */
    private static String getAuthorityFromPermission(Context context, String permission) {
        if (permission == null || permission.length == 0) {
            return null;
        }
        List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);
        if (packs == null) {
            return null;
        }
        for (PackageInfo pack : packs) {
            ProviderInfo[] providers = pack.providers;
            if (providers != null) {
                for (ProviderInfo provider : providers) {
                    if (permission.equals(provider.readPermission)|| permission.equals(provider.writePermission)) {
                        return provider.authority;
                    }
                }
            }
        }
        return null;
    }

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangbaochu/article/details/46816599

Android 为应用创建、删除桌面快捷方式

为应用创建快捷方式目前有两种方法: 1. 程序启动时主动添加快捷方式到桌面; 2....
  • JJMM2009
  • JJMM2009
  • 2014-07-17 11:21:28
  • 16767

Android7.0 添加快速设定Quick Settings Tile

Android7.0新推出了一个非常实用的功能——添加快速设定(或者翻译成快速设置),但是感觉社区里关注的人比较少,可能目前为止国内还没有Android7.0的手机,但是越早接触越好,甚至可以告诉产品...
  • yulianlin
  • yulianlin
  • 2016-08-30 10:44:44
  • 3455

给你的安卓程序添加一个快捷图标

1, 创建 Java代码 收藏代码 /** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = n...
  • u012473829
  • u012473829
  • 2016-01-07 21:03:25
  • 140

Android应用创建桌面快捷图标

public static void addShortcut(Activity cx, String name) { // TODO: 2017/6/25 创建快捷方式的intent...
  • mushanps
  • mushanps
  • 2017-06-28 13:30:57
  • 1024

Android创建桌面快捷方式所遇到的问题与解决方案

将近二个多月没写博客了。      之前一段时间一直在搞红包助手,就没抽时间写博客,但写这个真的是很好玩。没想到居然在Android上实现模拟点击,从而实现自动抢红包,有兴趣的同学可以参考https...
  • mrleeapple
  • mrleeapple
  • 2015-11-27 14:20:58
  • 4083

Android中实现Launcher功能之一 ----- 添加快捷方式

转载请注明出处:http://blog.csdn.net/qinjuning               前言: 最近一直在看Launcher模块,经过差不多两个月学习,终于摸透了Lau...
  • qinjuning
  • qinjuning
  • 2012-01-08 21:11:57
  • 15207

Android O(8.0)创建桌面快捷方式

Android O、Android 8.0、版本适配、桌面快捷方式
  • rentee
  • rentee
  • 2017-08-09 17:18:54
  • 11244

Android之动态更换桌面图标

Android之动态更换桌面图标文章链接知识点 动态更换APP 桌面icon的引述; activity组件及定义“同盟”组件activity-alias; PackageManager类进行启用/禁用...
  • qq_16628781
  • qq_16628781
  • 2017-04-04 00:13:32
  • 4609

Android快捷方式Demo

  • 2014年07月17日 11:24
  • 143KB
  • 下载

Android桌面快捷方式图标生成与删除,使用Intent与launcher交互

通过分析Launcher的生成快捷方式的过程,找出了使用Intent发送请求,Launcher通过自己注册的InstallShortCutReceiver和UnInstallShortCutRecei...
  • ljb_blog
  • ljb_blog
  • 2011-08-15 16:20:41
  • 4534
收藏助手
不良信息举报
您举报文章:Android 如何在Launcher桌面创建或者删除快捷图标
举报原因:
原因补充:

(最多只允许输入30个字)