ShortcutLib使用指南

jopen 9年前

ShortcutLib使用指南

本项目目前还在测试阶段,请大家多提issue,共同完善。

项目意义

快速使用shortcut,避免各种ROM适配导致的各种问题。

项目可用功能API

增加快捷方式

/**       * 添加快捷方式       *       * @param context      context       * @param actionIntent 要启动的Intent       * @param name         name       * @param allowRepeat  是否允许重复       * @param iconBitmap   快捷方式图标       */      public static void addShortcut(Context context, Intent actionIntent, String name,                                     boolean allowRepeat, Bitmap iconBitmap)

判断快捷方式是否存在

基础方式

/**       * 判断快捷方式是否存在       * <p/>       * 检查快捷方式是否存在 <br/>       * <font color=red>注意:</font> 有些手机无法判断是否已经创建过快捷方式<br/>       * 因此,在创建快捷方式时,请添加<br/>       * shortcutIntent.putExtra("duplicate", false);// 不允许重复创建<br/>       * 最好使用{@link #isShortCutExist(Context, String, Intent)}       * 进行判断,因为可能有些应用生成的快捷方式名称是一样的的<br/>       *       * @param context context       * @param title   快捷方式名       * @return 是否存在       */      public static boolean isShortCutExist(Context context, String title)

严格方式(增加Intent的检查)

/**       * 判断快捷方式是否存在       * <p/>       * 不一定所有的手机都有效,因为国内大部分手机的桌面不是系统原生的<br/>       * 更多请参考{@link #isShortCutExist(Context, String)}<br/>       * 桌面有两种,系统桌面(ROM自带)与第三方桌面,一般只考虑系统自带<br/>       * 第三方桌面如果没有实现系统响应的方法是无法判断的,比如GO桌面<br/>       *       * @param context context       * @param title   快捷方式名       * @param intent  快捷方式Intent       * @return 是否存在       */      public static boolean isShortCutExist(Context context, String title, Intent intent)

更新快捷方式

/**       * 更新桌面快捷方式图标,不一定所有图标都有效(有可能需要系统权限)       *       * @param context context       * @param title   快捷方式名       * @param intent  快捷方式Intent       * @param bitmap  快捷方式Icon       */      public static void updateShortcutIcon(Context context, String title, Intent intent, Bitmap bitmap)

需要注意的是,更新快捷方式在很多手机上都不能生效,需要系统权限。可以通过先删除、再新增的方式来实现。

为任意PackageName的App添加快捷方式

/**       * 为任意PackageName的App添加快捷方式       *       * @param context context       * @param pkg     待添加快捷方式的应用包名       * @return 返回true为正常执行完毕       */      public static boolean addShortcutByPackageName(Context context, String pkg)

移除快捷方式

/**       * 移除快捷方式       *       * @param context      context       * @param actionIntent 要启动的Intent       * @param name         name       */      public static void removeShortcut(Context context, Intent actionIntent, String name)

显示隐藏Launcher入口

/**       * 显示\隐藏Launcher入口       *       * @param context       context       * @param launcherClass launcherClass       */      public static void toggleFlowEntrance(Context context, Class launcherClass)

使用Launcher入口需要在AndroidMainifest文件中注册新增的入口Activity,例如:

<activity android:name=".MainActivity">      <intent-filter>          <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>  </activity>    <activity      android:name="com.xxx.xxxxx"      android:theme="@style/Base.Theme.AppCompat.Dialog">      <intent-filter>          <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />      </intent-filter>  </activity>

使用示例

public void addShortcutTest(View view) {          // 系统方式创建          // ShortcutUtils.addShortcut(this, getShortCutIntent(), mShortcutName);            // 创建前判断是否存在          if (!ShortcutSuperUtils.isShortCutExist(this, mShortcutName, getShortCutIntent())) {              ShortcutUtils.addShortcut(this, getShortCutIntent(), mShortcutName, false,                      BitmapFactory.decodeResource(getResources(), com.hujiang.hj_shortcut_lib.R.drawable.ocsplayer));              finish();          } else {              Toast.makeText(this, "Shortcut is exist!", Toast.LENGTH_SHORT).show();          }            // 为某个包创建快捷方式          // ShortcutSuperUtils.addShortcutByPackageName(this, this.getPackageName());      }        public void removeShortcutTest(View view) {          ShortcutUtils.removeShortcut(this, getShortCutIntent(), mShortcutName);      }        public void updateShortcutTest(View view) {          ShortcutSuperUtils.updateShortcutIcon(this, mShortcutName, getShortCutIntent(),                  BitmapFactory.decodeResource(getResources(), com.hujiang.hj_shortcut_lib.R.mipmap.ic_launcher));      }        public void toggleFlowEntrance(View view) {          FlowEntranceUtil.toggleFlowEntrance(this, HJShortcutActivity.class);      }        private Intent getShortCutIntent() {          // 使用MAIN,可以避免部分手机(比如华为、HTC部分机型)删除应用时无法删除快捷方式的问题          Intent intent = new Intent(Intent.ACTION_MAIN);          intent.addCategory(Intent.CATEGORY_DEFAULT);          intent.setClass(MainActivity.this, HJShortcutActivity.class);          return intent;      }

添加Badge

/**   * 设置Badge 目前支持Launcher:   * <p/>   * MIUI   * Sony   * Samsung   * LG   * HTC   * Nova   *   * @param context context   * @param count   count   */  public static void setBadgeCount(Context context, int count)

该方法可以给icon图标增加角标。

移除Badge

/**   * 重置Badge   *   * @param context context   */  public static void resetBadgeCount(Context context)

项目地址: https://github.com/xuyisheng/ShortcutHelper