创建桌面快捷方式
原理
通过Intent以广播的形式通知Launcher创建快捷方式
步驟
- 申请权限
xml
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
编写代码,将intent的action设置为com.android.launcher.action.INSTALL_SHORTCUT
/** 创建快捷方式 **/ private void createShortCut() { // 先判断该快捷是否存在 if (!isExist()) { Intent intent = new Intent(); // 指定动作名称 intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); // 指定快捷方式的图标 Parcelable icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.logo); //intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, photoBitmap); // 指定快捷方式的名称 intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, userNameString); // 指定快捷图标激活哪个activity Intent i = new Intent(); i.setAction(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_LAUNCHER); //i.putExtra("PhoneNumber", userPhone); ComponentName component = new ComponentName(this, MainActivity.class); i.setComponent(component); intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i); sendBroadcast(intent); } } private boolean isExist() { boolean isExist = false; int version = getSdkVersion(); Uri uri = null; if (version < 2.0) { 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[] { userNameString }; Cursor c = getContentResolver().query(uri, null, selection, selectionArgs, null); if (c != null && c.getCount() > 0) { isExist = true; } if (c != null) { c.close(); } return isExist; } private int getSdkVersion() { return android.os.Build.VERSION.SDK_INT; }