刚好工作中用到这个功能,完成之余把代码片段贴出来大家看看,调用下面的方法就可以创建。
private void makeShortcut() {
String SHORTCUT_INSTALL = "com.android.launcher.action.INSTALL_SHORTCUT";
String packageName = "com.android.Update"; //需要提供这个包名,请改成要添加应用的包名
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageName);
List<ResolveInfo> apps = getPackageManager().queryIntentActivities(resolveIntent, PackageManager.GET_ACTIVITIES);
if(apps.size() == 0) {
Toast.makeText(this, "无法创建快捷方式", Toast.LENGTH_SHORT).show();
return;
}
ResolveInfo ri = apps.get(0);
if (ri != null) {
Intent shortcut = new Intent(SHORTCUT_INSTALL);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, ri.loadLabel(getPackageManager()));
shortcut.putExtra("duplicate", false);// 不允许重复创建
String className = ri.activityInfo.name;
ComponentName cn = new ComponentName(packageName,className);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(cn));
// 显示的图标
Drawable iconDrawable = ri.loadIcon(getPackageManager());
BitmapDrawable iconBitmapDrawable = (BitmapDrawable) iconDrawable;
Bitmap iconBitmap = iconBitmapDrawable.getBitmap();
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconBitmap);
// 发送广播用以创建shortcut
this.sendBroadcast(shortcut);
}
}
别忘了在AndroidManifest.xml中加上添加桌面快捷方式的权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />