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 ; }