Android快捷图标的创建与移除

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

    /** 
         * 添加桌面快捷方式 
         *  
         * @param view 
         */  
        public void click1(View view) {  
            if (isExit()) {  
                Toast.makeText(getApplicationContext(), "快捷方式已经存在", 0).show();  
                return;  
            }  
            // 取得图标资源  
            Parcelable icon = Intent.ShortcutIconResource.fromContext(  
                    getApplicationContext(), R.drawable.logo);  
            Intent intent = new Intent();  
            // 设置意图的动作  
            intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");  
            // 设置图标的名称  
            intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL");  
            // 设置图标  
            intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);  
            // 设置意图的动作和类别  
            Intent intent2 = new Intent();  
            intent2.setAction(Intent.ACTION_MAIN);  
            intent2.addCategory(Intent.CATEGORY_LAUNCHER);  
            intent2.setComponent(new ComponentName(this, MainActivity.class));  
            intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2);  
            sendBroadcast(intent);  
        }  

    /** 
         * 删除桌面快捷方式 
         *  
         * @param view 
         */  
        public void click2(View view) {  
            Parcelable icon = Intent.ShortcutIconResource.fromContext(  
                    getApplicationContext(), R.drawable.logo);  
            Intent intent = new Intent();  
            // 设置意图的动作  
            intent.setAction("com.android.launcher.action.UNINSTALL_SHORTCUT");  
            // 设置图标的名称  
            intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "LOL");  
            // 设置图标  
            intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);  
            // 设置意图的动作和类别  
            Intent intent2 = new Intent();  
            intent2.setAction(Intent.ACTION_MAIN);  
            intent2.addCategory(Intent.CATEGORY_LAUNCHER);  
            intent2.setComponent(new ComponentName(this, MainActivity.class));  
            intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent2);  
            sendBroadcast(intent);  
        }  

    /** 
         * 判断桌面是否已经存在快捷方式 
         *  
         * @return 
         */  
        private boolean isExit() {  
            Uri uri = null;  
            // 不同版本中的Uri不同  
            if (getSdkVersion() < 8) {  
                uri = Uri  
                        .parse("content://com.android.launcher.settings/favorites");  
            } else {  
                uri = Uri  
                        .parse("content://com.android.launcher2.settings/favorites");  
            }  
            String selection = "title=?";  
            String[] selectionArgs = new String[] { "LOL" };  
            Cursor cursor = getContentResolver().query(uri, null, selection,  
                    selectionArgs, null);  
            if (cursor.moveToNext()) {  
                cursor.close();  
                return true;  
            } else {  
                cursor.close();  
                return false;  
            }  
        }  

    /** 
         * 获得手机SDK的版本 
         *  
         * @return 
         */  
        private int getSdkVersion() {  
            return android.os.Build.VERSION.SDK_INT;  
        }  

需要声明的权限

    <!-- 添加快捷方式权限 -->
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
    <!-- 读取设置权限 -->
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <!-- 删除快捷方式权限 -->
    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/>