美文网首页
Android 最新的快捷方式总结--支持8.0

Android 最新的快捷方式总结--支持8.0

作者: wan7451 | 来源:发表于2019-04-01 19:30 被阅读0次

Android 快捷方式的创建在 7.0版本之前都是直接发广播,并不知道创建成功与失败。

Intent addIntent = new Intent();
addIntent.putExtra("android.intent.extra.shortcut.INTENT", shortcutIntent);  //打开的Intent
addIntent.putExtra("android.intent.extra.shortcut.NAME", name);    //名字
addIntent.putExtra("android.intent.extra.shortcut.ICON", icon);     //图标
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
context.sendBroadcast(addIntent);

国产的Android手机大多默认没有快捷方式权限,需要引导用户去开启权限

在Android 8.0 之后,推出了用于创建快捷方式的Api,并且通过广告可以获得创建的结果。

Intent shortcutIntent =new Intent();//快捷方式跳转的Intent
ShortcutManager shortcutManager = context.getSystemService(ShortcutManager.class);
if (!shortcutManager.isRequestPinShortcutSupported()) {
  return; //不支持创建快捷方式   PinShortcut 为我们常见的桌面快捷方式
}

String action = "com.deniu.shortcut.create";
BroadcastReceiver receiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
      //快捷方式创建完成的广播  
  }
};
IntentFilter filter = new IntentFilter(action);
//注册接受结果的广播
context.registerReceiver(receiver, filter);
//快捷方式对象
ShortcutInfo pinShortcutInfo = new ShortcutInfo.Builder(context,id) //id
                .setLongLabel(appName)
                .setShortLabel(appName)
                .setIcon(Icon.createWithBitmap(icon))
                .setIntent(shortcutIntent)
                .build();
//PendingIntent 
Intent pinnedShortcutCallbackIntent = new Intent(action);
PendingIntent successCallback = PendingIntent.getBroadcast(context, 0,
    pinnedShortcutCallbackIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//创建快捷方式
shortcutManager.requestPinShortcut(context, pinShortcutInfo, successCallback.getIntentSender());

这个Api 的要求版本高,可以使用兼容Api来处理。
将 ShortcutInfo,ShortcutManager 都换成 ShortcutManagerCompat、ShortcutInfoCompat 即可。

ShortcutManagerCompat.isRequestPinShortcutSupported(context);

ShortcutInfoCompat pinShortcutInfo = new ShortcutInfoCompat.Builder(context,id)
                .setLongLabel(appName)
                .setShortLabel(appName)
                .setIcon(IconCompat.createWithBitmap(icon))
                .setIntent(shortcutIntent)
                .build();

ShortcutManagerCompat.requestPinShortcut(context,
                    pinShortcutInfo,
                    successCallback.getIntentSender());

相关文章

网友评论

      本文标题:Android 最新的快捷方式总结--支持8.0

      本文链接:https://www.haomeiwen.com/subject/zosrbqtx.html