Android桌面快捷方式工具类

作者: 才兄说 | 来源:发表于2018-02-08 10:13 被阅读68次

    最近项目中,使用的是比较老的系统开发pda,原生的系统是上下两层的,为了方便打开,需要给应用程序添加快捷方式,方便在上层直接点击进入应用。如下提供一个用到的工具类,大家有需要copy即可。

    /**
     * 创建删除快捷图标
     * 注意添加权限:
     * com.android.launcher.permission.INSTALL_SHORTCUT
     * com.android.launcher.permission.UNINSTALL_SHORTCUT
     */
    public final class ShortCutUtil {
    
        /**
         * Don't let anyone instantiate this class.
         */
        private ShortCutUtil() {
            throw new Error("Do not need instantiate!");
        }
    
        /**
         * 检测是否存在快捷键
         *
         * @param activity Activity
         * @return 是否存在桌面图标
         */
        public static boolean hasShortcut(Activity activity) {
            boolean isInstallShortcut = false;
            final ContentResolver cr = activity.getContentResolver();
            final String AUTHORITY = "com.android.launcher.settings";
            final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY
                    + "/favorites?notify=true");
            Cursor c = cr.query(CONTENT_URI,
                    new String[]{"title", "iconResource"}, "title=?",
                    new String[]{activity.getString(R.string.app_name).trim()},
                    null);
            if (c != null && c.getCount() > 0) {
                isInstallShortcut = true;
            }
            return isInstallShortcut;
        }
    
        /**
         * 为程序创建桌面快捷方式
         *
         * @param activity Activity
         * @param res      res
         */
        public static void addShortcut(Activity activity, int res) {
    
            Intent shortcut = new Intent(
                    "com.android.launcher.action.INSTALL_SHORTCUT");
            // 快捷方式的名称
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
                    activity.getString(R.string.app_name));
            // 不允许重复创建
            shortcut.putExtra("duplicate", false);
            Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);
            shortcutIntent.setClassName(activity, activity.getClass().getName());
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
            // 快捷方式的图标
            Intent.ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(
                    activity, res);
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
    
            activity.sendBroadcast(shortcut);
        }
    
        /**
         * 删除程序的快捷方式
         *
         * @param activity Activity
         */
        public static void delShortcut(Activity activity) {
    
            Intent shortcut = new Intent(
                    "com.android.launcher.action.UNINSTALL_SHORTCUT");
            // 快捷方式的名称
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
                    activity.getString(R.string.app_name));
            String appClass = activity.getPackageName() + "."
                    + activity.getLocalClassName();
            ComponentName comp = new ComponentName(activity.getPackageName(),
                    appClass);
            shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
                    Intent.ACTION_MAIN).setComponent(comp));
            activity.sendBroadcast(shortcut);
        }
    }
    

    相关文章

      网友评论

        本文标题:Android桌面快捷方式工具类

        本文链接:https://www.haomeiwen.com/subject/axnzzxtx.html