快速使用shortcut,适配各种ROM

地址(徐医生的GitHub):https://github.com/xuyisheng/ShortcutHelper

常用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)  

     /**      * 移除快捷方式      *      * @param context      context      * @param actionIntent 要启动的Intent      * @param name         name      */     public static void removeShortcut(Context context, Intent actionIntent, String name)  
   /**     * 更新桌面快捷方式图标,需要注意的是,更新快捷方式在很多手机上都不能生效,需要系统权限。可以通过先删除、再新增的方式来实现。     *     * @param context context     * @param title   快捷方式名     * @param intent  快捷方式Intent     * @param bitmap  快捷方式Icon     */    public static void updateShortcutIcon(Context context, String title, Intent intent, Bitmap bitmap) 
    /**     * 判断快捷方式是否存在,基础方式     * <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的检查      *       * 不一定所有的手机都有效,因为国内大部分手机的桌面不是系统原生的<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)  
     /**      * 为任意PackageName的App添加快捷方式      *      * @param context context      * @param pkg     待添加快捷方式的应用包名      * @return 返回true为正常执行完毕      */     public static boolean addShortcutByPackageName(Context context, String pkg)
     /**      * 显示\隐藏Launcher入口      *      * @param context       context      * @param launcherClass launcherClass      */     public static void toggleFlowEntrance(Context context, Class launcherClass) 使用Launcher入口需要在AndroidMainifest文件中注册新增的入口Activity,只需添加多个如下配置的intent-filter即可,例如:

示例


public class MainActivity extends Activity {

    // 快捷方式名

    private String mShortcutName = "学习工具";

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

    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.xys.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.xys.shortcut_lib.R.mipmap.ic_launcher));     }     public void toggleFlowEntrance(View view) {         FlowEntranceUtil.toggleFlowEntrance(this, ShortcutActivity.class);     }     private Intent getShortCutIntent() {         // 使用MAIN,可以避免部分手机(比如华为、HTC部分机型)删除应用时无法删除快捷方式的问题         Intent intent = new Intent(Intent.ACTION_MAIN);         intent.addCategory(Intent.CATEGORY_DEFAULT);         intent.setClass(MainActivity.this, ShortcutActivity.class);         return intent;     }
    public void addBadgeInIcon(View view) {         // 添加角标测试         //        ShortcutBadger.with(getApplicationContext()).count(9);         BadgeUtil.setBadgeCount(getApplicationContext(), 4);     }     public void delBadgeInIcon(View view) {         BadgeUtil.resetBadgeCount(getApplicationContext());     }     /**      * Bug利用测试,请勿滥用      *      * @param view view      */     public void madMode(View view) {         madMode(99);     }     /**      * 清除Bug角标      *      * @param view view      */     public void cleanMadMode(View view) {         madMode(0);     }     /**      * 获取所有App的包名和启动类名      *      * @param count count      */     private void madMode(int count) {         Intent intent = new Intent(Intent.ACTION_MAIN, null);         intent.addCategory(Intent.CATEGORY_LAUNCHER);         List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.GET_ACTIVITIES);         for (int i = 0; i < list.size(); i++) {             ActivityInfo activityInfo = list.get(i).activityInfo;             String activityName = activityInfo.name;             String packageName = activityInfo.applicationInfo.packageName;             BadgeUtil.setBadgeOfMadMode(getApplicationContext(), count, packageName, activityName);         }     } }

角标


   /**

     * 设置Badge 目前支持Launcher:

     * <p/>

     * MIUI

     * Sony

     * Samsung

     * LG

     * HTC

     * Nova

     *

     * @param context context

     * @param count   count

     */

    public static void setBadgeCount(Context context, int count) 

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

来自为知笔记(Wiz)

时间: 2025-01-15 18:05:01

快速使用shortcut,适配各种ROM的相关文章

Android开发中适配多种 ROM 的快捷方式是如何实现的?

在安卓开发中,要提高开发效率,掌握一些快捷方式是必不可少的,特别是对于android入门阶段的童鞋而言,非常重要.今天小编在安卓开发教程网站上,搜罗了一些常用的Android 适配多种 ROM 的快捷方式,分享给大家,一起来看看他们是怎么实现的吧. 首先,需要获取权限: <!-- 添加快捷方式 --> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /&g

Android 适配多种ROM的快捷方式

快捷方式 应该来说 很多人都做过,我们就来看一下基本的快捷方式 是怎么实现的,会有什么问题? 首先 肯定要获取权限: 1 <!-- 添加快捷方式 --> 2 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 3 <!-- 移除快捷方式 --> 4 <uses-permission android:name="com.a

Android快捷方式解密

Android快捷方式解密 Android快捷方式作为Android设备的杀手锏技能,一直都是非常重要的一个功能,也正是如此,各种流氓App也不断通过快捷方式霸占着这样一个用户入口. 同时,各大国产ROM和Luncher的崛起,让这个桌面之争变的更加激烈.毕竟大家都只想用户用自己的App资源,所以,现在各大App不仅仅是要抢占入口,同时还要和各大ROM斗智斗勇.本文将对这个快捷方式进行深度解密,同时给出App适配各种ROM的整合方案. 本文很多地方参考了这位朋友的实现: https://gist

整理一些开源项目

Android官方培训课程中文版 https://github.com/kesenhoo/android-training-course-in-chinese Android-Develop-Resources 汇总优秀的android开发资源 https://github.com/zmywly8866/Android-Develop-Resources Android学习资源网站索引大全 https://github.com/zhujun2730/Android-Learning-Resour

巧用 BootStrap --- 栅格系统(布局)轻松搞定网页响应式布局!

摘要:Bootstrap 为我们提供了一套响应式.移动设备优先的流式栅格系统,合理的使用栅格系统将会使得网站页面布局变得更加简单,在设置了媒体查询之后,响应式网站也无需再单独写了.接下来我以Bootstrap的中文官网首页为模板进行展示其栅格布局的使用方法以及相关知识点.相信在看完这篇文章之后,你完全可以轻松使用栅格布局. 网站效果图如下所示: PC版: 移动版: 1.栅格系统(布局) Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加

Bootstrap框架。

什么是 Bootstrap Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. Bootstrap特点 预处理脚本虽然可以直接使用 Bootstrap 提供的 CSS 样式表,不要忘记 Bootstrap 的源码是基于最流行的 CSS 预处理脚本 - Less 和 Sass 开发的.你可以采用预编译的 CSS 文件快速开发,也可以从源码定制自己需要的样式. 一个框架.

bootStrap的相关内容

预处理脚本 虽然可以直接使用 Bootstrap 提供的 CSS 样式表,不要忘记 Bootstrap 的源码是基于最流行的 CSS 预处理脚本 - Less 和 Sass 开发的.你可以采用预编译的 CSS 文件快速开发,也可以从源码定制自己需要的样式. 一个框架.多种设备 你的网站和应用能在 Bootstrap 的帮助下通过同一份代码快速.有效适配手机.平板.PC 设备,这一切都是 CSS 媒体查询(Media Query)的功劳. 特性齐全 Bootstrap 提供了全面.美观的文档.你能

优质项目-Bootstrap3前端框架

Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目. 为所有开发者.所有应用场景而设计. Bootstrap 让前端开发更快速.简单.所有开发者都能快速上手.所有设备都可以适配.所有项目都适用. 预处理脚本 虽然可以直接使用 Bootstrap 提供的 CSS 样式表,不要忘记 Bootstrap 的源码是基于最流行的 CSS 预处理脚本 - Less 和Sass 开发的.你可以采用预编译的 CSS 文件快速开发,也可以从源码定制

Agile国人出品HTML5+CSS3+JS移动应用开发框架

Agile 是一个基于HTML5+CSS3+JS的移动应用开发框架,在体验上尽量接近Native Like,并且同时支持单页模式和多页模式. Agile 让HTML5在移动应用开发中充分发挥优势.所有开发者都能快速上手.所有设备都可以适配.所有项目都适用. 简单.可扩展 Agile 支持Zepto和jQuery双引擎及相应的扩展:同时Agile均支持单页模式和多页模式的移动应用,可以与ExMobi.PhoneGap等流行的跨平台开发框架一起使用. 一个框架.多种设备 你的移动应用能在 Agile