• Stars
    star
    1,002
  • Rank 45,804 (Top 1.0 %)
  • Language
    Java
  • Created about 9 years ago
  • Updated over 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a shortcut lib for easy use shortcut

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)

More Repositories

1

flutter_dojo

A beautiful design and useful project for Building a flutter knowledge architecture
Dart
1,427
star
2

AndroidHeroes

Source code of the book - Android群英传
Java
909
star
3

DesignSupportLibraryDemo

Android Design Support Library Demo
Java
709
star
4

AccessibilityUtil

AccessibilityService Utils
Java
458
star
5

ZXingLib

lib of zxing based on 3.1. You can see it in http://blog.csdn.net/eclipsexys/article/details/47834865
Java
379
star
6

TextViewForFullHtml

init commit
Java
281
star
7

VectorDemo

Show Vector Drawable usage in Android 2.1+
Java
268
star
8

NaturalAnim

自然动画的真实模拟
Java
257
star
9

BezierArt

详细内容请看博客 http://blog.csdn.net/eclipsexys/article/details/51956908
Java
156
star
10

PathArt

详细内容请看博客 http://blog.csdn.net/eclipsexys/article/details/51992473
Java
55
star
11

RatingbarGuide

Ratingbar Guide,include system origin ratingbar and custom ratingbar.
Java
29
star
12

CameraGuide

Java
14
star
13

XPuzzle

Java
7
star
14

TextMatrix

TextMatrix
Kotlin
4
star
15

Game2048

Java
3
star
16

ConstraintLayout2Demo

Kotlin
3
star
17

xuyisheng.github.io

HTML
3
star
18

AndroidAutoTest

Android auto test demo of UIAutomator
Java
3
star
19

MaterialDesignUIKit

MaterialDesignUIKit
Java
2
star
20

lib_ZXing

easy to use zxing lib
Java
1
star
21

motionlayout_expert

Java
1
star
22

taichi_clock

Flutter Clock challenge
Dart
1
star
23

ListViewSyncLoader

Demo as the blog——http://blog.csdn.net/column/details/synctask.html
Java
1
star
24

flutter_dojo_other

Dart
1
star
25

TaobaoTrial

淘宝试用自动化软件
Python
1
star
26

AndroidUIPatterns

Java
1
star
27

StrictModeTest

Java
1
star
28

SpringCard

for imooc
Java
1
star