Android Shortcuts 为其他应用创建桌面快捷方式,替换图标等

shortcuts功能自android N_MR1(7.1,api 25)引入,使用ShortcutManager管理,
关于创建桌面图标pinned shortcuts是android O(8.0 api 26添加的,但是可以通过support包在低版本兼容)

  • 在查看官方文档时发现有这么一段话

    Note: See also the support library APIs, isRequestPinShortcutSupported() and requestPinShortcut(), which work on Android 7.1 (API level 25) and lower. The support library falls back to the deprecated EXTRA_SHORTCUT_INTENT extra to attempt the pinning process.

    • 创建桌面快捷图标在安卓7.1之前可以通过support(android.support.v4.content.pm)包兼容

创建

直接看代码

     class ShortcutIconBean{             @JsonName("name")             private String name;             @JsonName("packageName")             private String packageName;             @JsonName("iconPath")             private String iconPath;          }             class  xxx{             /**添加快捷方式              *@param  shortcutInfoIntent 创建桌面图标以后点击的执行逻辑              *              * */         private void addShortcut(Intent shortcutInfoIntent,ShortcutIconBean shortCut) {         Bitmap bitmap = BitmapUtils.decodeFile(shortCut.getIconPath());         if (bitmap == null){             Log.i(TAG,"bitmap == null");             return;         }         String id = mThemeId + "-" + shortCut.getName() + "-" + System.currentTimeMillis();         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {             Log.i(TAG," Android O");             ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);             ShortcutInfo  info = new ShortcutInfo.Builder(this, id)                     .setIcon(Icon.createWithBitmap(bitmap))                     .setShortLabel(shortCut.getName())                     .setIntent(shortcutInfoIntent)                     .build();             Intent successCallback = new Intent(ACTION);     /*    //In your app's manifest file, add ACTION_CREATE_SHORTCUT to the activity's  element.           // 使用这个方式获取intent需要自己创建一个ACTIVITY管理创建成功回调,在ACTIVITY声明中加 ACTION_CREATE_SHORTCUT 过滤      Intent successCallback =                     shortcutManager.createShortcutResultIntent(info);*/             PendingIntent shortcutCallbackIntent = PendingIntent.getBroadcast(this, 200,                     successCallback, PendingIntent.FLAG_UPDATE_CURRENT);              shortcutManager.requestPinShortcut( info, shortcutCallbackIntent.getIntentSender());          } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){             ShortcutInfoCompat info = new ShortcutInfoCompat.Builder(this, id)                     .setIcon(IconCompat.createWithBitmap(bitmap))                     .setShortLabel(shortCut.getName())                     .setIntent(shortcutInfoIntent)                     .build();             Intent successCallback = new Intent(ACTION);             //ACTION 处理创建结果的广播              PendingIntent shortcutCallbackIntent = PendingIntent.getBroadcast(this, 200,                     successCallback, PendingIntent.FLAG_UPDATE_CURRENT);              ShortcutManagerCompat.requestPinShortcut(this, info, shortcutCallbackIntent.getIntentSender());//           注释部分为发广播的实现方式,不在使用 /*            Log.i(TAG," Android N");             Intent launcherIntent = new Intent(Intent.ACTION_MAIN);             launcherIntent.setClass( this, JumpActivity.class);             launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);             launcherIntent.putExtra("packageName",shortCut.getPackageName());            //            Intent launcherIntent = new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);             Intent installer = new Intent();             //false标示不重复创建             installer.putExtra("duplicate", false);             installer.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent);             //设置应用的名称             installer.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortCut.getName());             //设置图标             Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 128, 128, true);             installer.putExtra(Intent.EXTRA_SHORTCUT_ICON,bitmap);             installer.setAction("com.android.launcher.action.INSTALL_SHORTCUT");             //发送安装桌面图标的通知             sendBroadcast(installer);             Toast.makeText(this,"制作完成,请到桌面查看",Toast.LENGTH_SHORT).show();*/         }      }   }          

版本判断然后执行不同代码,其实不同之处仅仅是将 ShortcutInfo 使用 ShortcutInfoCompat进行,

关于动态添加删除以及长按图标出现二级网上说得比较多

可参考shortcuts

更多相关文章

  1. Android中创建倒影效果的工具类
  2. [转]Android(安卓)Launcher 分析
  3. 如何为android创建icon?
  4. 创建自己的Repo Server
  5. FFmpeg编程开发笔记 —— Android(安卓)FFmpeg + SDL2.0简易播放
  6. android中webview接收favicon总是获取为null解决方案
  7. 【笔记】Android上ROS开发——android_core创建一个android应用
  8. Activity的启动模式以及Intent的七大属性
  9. 在Android(安卓)Studio创建第一个Android项目

随机推荐

  1. Android(安卓)应用安装设置
  2. Android经典蓝牙和Ble蓝牙的对比
  3. android 10.0拍照显示并上传服务器
  4. 弹球效果动画
  5. android:屏幕自适应
  6. Android(安卓)Password Field Example
  7. android环境搭建
  8. 聊聊Android切图
  9. Android帧布局实现霓虹灯的效果
  10. android半透明activity设置