在Android O及后续更高平台上,应用在桌面创建快捷方式的方法有了较多变更,从交互方式上趋向于让用户二次确认。代码如下:
public static void addShortCut(Context context) {
ShortcutManager shortcutManager = (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
if (shortcutManager.isRequestPinShortcutSupported()) {
Intent shortcutInfoIntent = new Intent(context, MainActivity.class);
shortcutInfoIntent.setAction(Intent.ACTION_VIEW); //action必须设置,不然报错
ShortcutInfo info = new ShortcutInfo.Builder(context, "The only id")
.setIcon(Icon.createWithResource(context, R.mipmap.ic_launcher))
.setShortLabel("Short Label")
.setIntent(shortcutInfoIntent)
.build();
//当添加快捷方式的确认弹框弹出来时,将被回调
PendingIntent shortcutCallbackIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
shortcutManager.requestPinShortcut(info, shortcutCallbackIntent.getIntentSender());
}
}
效果如下:
如选择自动添加,则在桌面位置自动添加一个1x1的快捷方式,如选择手动添加,交互则类似于widget添加。?
|