Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

burningc/ShortcutHelper

Repository files navigation

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)

About

a shortcut lib for easy use shortcut

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%

AltStyle によって変換されたページ (->オリジナル) /