[Android Pro] 创建快捷方式,删除快捷方式,查询是否存在快捷方式

简介:

1: 创建快捷方式

需要权限: <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 

复制代码
private static void createShortcut(Context cxt, String shortcutName, int shortcutIconRes,
            String className, boolean duplicate, boolean laucherCategory) {

        Intent intent = getShortCutIntent(cxt, cxt.getPackageName(), className, shortcutName,
                laucherCategory);
        int iconsize = cxt.getResources().getDimensionPixelSize(Res.dimen.app_icon_size);
        BitmapDrawable icon = (BitmapDrawable) cxt.getResources().getDrawable(shortcutIconRes);
        Bitmap bmp = ImageUtils.scaleTo(icon.getBitmap(), iconsize, iconsize, false);
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bmp);
        intent.putExtra(EXTRA_SHORTCUT_DUPLICATE, duplicate);

        // Now, notify the launcher to create the shortcut
        cxt.sendBroadcast(intent);
    }
复制代码
复制代码
private static Intent getShortCutIntent(Context cxt, String pkgName, String className,
            String shortcutName, boolean laucherCategory) {
        // Prepare the intents for shortcut
        Intent shortcutIntent = new Intent(Intent.ACTION_VIEW);
        shortcutIntent.setClassName(pkgName, className);
        shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        shortcutIntent.putExtra(Constants.EXTRA_FROM_KEY, Constants.EXTRA_FROM_VALUE_SHORTCUT);
        if (laucherCategory) {
            shortcutIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            shortcutIntent.setAction(Intent.ACTION_MAIN);
        }

        Intent intent = new Intent(ACTION_INSTALL_SHORTCUT);
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
        return intent;
    }
复制代码

2:删除快捷方式(MIUI系统不支持):

需要权限:<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

复制代码
public static void removeShortcut(Context cxt, String shortcutName, String className,
            boolean removeAll) {
        // Prepare the intents for shortcut
        Intent shortcutIntent = new Intent(Intent.ACTION_VIEW);
        shortcutIntent.setClassName(cxt, className);

        Intent intent = new Intent(ACTION_UNINSTALL_SHORTCUT);
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
        intent.putExtra(EXTRA_SHORTCUT_DUPLICATE, removeAll);

        // Now, notify the launcher to remove the shortcut
        cxt.sendBroadcast(intent);
    }
复制代码

3:查询快捷方式是否存在(三方rom大部分查询失败,cursor为null)

需要权限:<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

  或者      <uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />

复制代码
private boolean hasShortcut()
{
        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[] {getString(R.string.app_name).trim()}, null);
        if(c!=null && c.getCount()>0){
//String title = c.getString(c.getColumnIndexOrThrow("title")); isInstallShortcut
= true ; } return isInstallShortcut ; }
复制代码

 

分类:  Android Pro
本文转自demoblog博客园博客,原文链接http://www.cnblogs.com/0616--ataozhijia/p/3940973.html如需转载请自行联系原作者

demoblog
相关文章
|
5月前
|
人工智能 API 语音技术
探索Gemini Pro AI在智能Android应用中的魅力
探索Gemini Pro AI在智能Android应用中的魅力
45 0
|
5月前
|
人工智能 API 语音技术
使用 Gemini Pro AI 开发 Android 应用程序
使用 Gemini Pro AI 开发 Android 应用程序
68 0
|
6月前
|
Java Android开发
Android桌面快捷方式图标生成与删除 使用Intent与launcher交互
Android桌面快捷方式图标生成与删除 使用Intent与launcher交互
109 1
|
开发工具 Android开发
Android平台GB28181设备接入端预置位查询(PresetQuery)探讨和技术实现
之前blog介绍了GB28181云台控制(PTZCmd)相关,本文主要是介绍下GB28181预置位查询。
168 0
|
XML API Android开发
Android长按图标展示快捷方式
这个特性,可以追溯到Android 7.1,也就是在7.1之后的系统,如果app支持,可以通过长按app图标展示一些快捷操作
180 0
|
Android开发
王者荣耀安卓区修改荣耀战区方法 | 最低战力查询(附带视频与安装包)
王者荣耀安卓区修改荣耀战区方法 | 最低战力查询(附带视频与安装包)
220 0
|
数据库 Android开发
重新构建711的Android项目(一),巧妙的小屏菜单查询框架实现
重新构建711的Android项目(一),巧妙的小屏菜单查询框架实现
|
Android开发 数据库管理
Android SQLite 使用 query 查询特定行数据
Android SQLite 使用 query 查询特定行数据
Android SQLite 使用 query 查询特定行数据
|
存储 编解码 前端开发
Android自定义控件(八)——详解创建bitmap的方式
Android自定义控件(八)——详解创建bitmap的方式
286 0
Android自定义控件(八)——详解创建bitmap的方式
|
存储 Java Android开发
Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵
Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵
188 0
Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵