Android 创建快捷方式
1、AndroidManifest.xml中添加权限
<!-- 添加快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<!-- 移除快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<!-- 查询快捷方式 -->
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
2、创建快捷方式(android8.0之后创建方式不同,老版本方法在8.0设备不生效)
public static void installShortCut(final String name) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
ShortcutManager shortcutManager = (ShortcutManager) myContext.getSystemService(Context.SHORTCUT_SERVICE);
if (shortcutManager != null && shortcutManager.isRequestPinShortcutSupported()) {
Intent shortcutInfoIntent = new Intent(myContext, AppActivity.class);
shortcutInfoIntent.setAction(Intent.ACTION_VIEW); //action必须设置,不然报错
int resId = myContext.getResources().getIdentifier("shareicon","drawable", myContext.getPackageName());
shortcutInfoIntent.putExtra("shortcutmark", name);
ShortcutInfo info = new ShortcutInfo.Builder(myContext, "The only id")
.setIcon(Icon.createWithResource(myContext, resId))
.setShortLabel(name)
.setIntent(shortcutInfoIntent)
.build();
//当添加快捷方式的确认弹框弹出来时,将被回调
PendingIntent shortcutCallbackIntent = PendingIntent.getBroadcast(myContext, 0, new Intent(myContext, MyReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
shortcutManager.requestPinShortcut(info, shortcutCallbackIntent.getIntentSender());
}
}
else {
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
shortcut.putExtra("duplicate", false); // 不允许重复创建
shortcut.putExtra("shortcutmark", name);
int resId = myContext.getResources().getIdentifier("shareicon","drawable", myContext.getPackageName());
Intent.ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(myContext, resId);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
Intent intent = new Intent();
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
ComponentName comp = new ComponentName(myContext.getPackageName(), "org.cocos2dx.lua.AppActivity");
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent.setComponent(comp));
myContext.sendBroadcast(shortcut);
}
}