快速使用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)
/*** 移除快捷方式** @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 = "学习工具";@Overrideprotected 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)
快速使用shortcut,适配各种ROM的更多相关文章
- Android开发中适配多种 ROM 的快捷方式是如何实现的?
		
在安卓开发中,要提高开发效率,掌握一些快捷方式是必不可少的,特别是对于android入门阶段的童鞋而言,非常重要.今天小编在安卓开发教程网站上,搜罗了一些常用的Android 适配多种 ROM 的快捷 ...
 - 【大盛】全网首发HTC One/M7 最新本地化TrickDroid9.0/固件升级/永久root/高级,快速设置/稳定,流畅经典ROM
		
了解更多请关注:点击打开链接 ROM版本 HTC One/M7_TrickDroid9.0.0 ROM作者 雪狼团队-大盛 http://weibo.com/DaShengdd Android版本 ...
 - Android 适配多种ROM的快捷方式
		
快捷方式 应该来说 很多人都做过,我们就来看一下基本的快捷方式 是怎么实现的,会有什么问题? 首先 肯定要获取权限: <!-- 添加快捷方式 --> <uses-permission ...
 - 两分钟让你明白cocos2dx的屏幕适配策略
		
闲来无事,整理了一下cocos2dx的屏幕适配策略,本文适用于想快速理解cocos2dx适配的开发者. 我们先假设:以854 * 480 的屏幕为标准进行开发,当然,这也就是cocos2dx所说的设计 ...
 - MSM8909中LK阶段LCM屏适配与显示流程分析(一)
		
1.前言 在驱动开发中,我们往往需要适配一些新的屏幕或者调试一些屏幕的参数等,对于Qualcomm的MSM8909这款SoC,当启动Android系统时,会有一个LK阶段,该阶段用来启动Linux内核 ...
 - Android 实用开源控件
		
图片放大缩小: PinchImageView 体验最好的图片手势控件,不同分辨率无缝切换,可与ViewPager结合使用. GestureViews 带有手势控制的ImageView和FrameLay ...
 - Toast与Snackbar的那点事
		
背景 Toast是Android平台上的常用技术.从用户角度来看,Toast是用户与App交互最基本的提示控件:从开发者角度来看,Toast是开发过程中常用的调试手段之一.此外,Toast语法也非常简 ...
 - Boostrap
		
基本认知: Boostrap绝对是目前最流行用得最广泛的一款框架.它是一套优美,直观并且给力的web设计工具包,可以用来开发跨浏览器兼容并且美观大气的页面. Bootstrap的优缺点: 缺点: 1. ...
 - 关于web开发前端h5框架的选择
		
关于web开发前端h5框架的选择 看了很多移动版框架都是基于app混合式开发的,不是单独h5网站的基于h5开发的web框架从组件丰富度,兼容性,相关教程来说bootstrap还是最好的react和vu ...
 
随机推荐
- 利用GDB在远程开发机进行调试
			
由于一些环境的制约,很多同学都可能需要在开发机上进行调试,但由于开发机资源的限制,在开发机上直接进行本地的GDB环境配置就成了难题,这个时候其实我们可以利用GDB中自带的gdbserver工具就可以进 ...
 - javascript权威指南学习笔记1
			
打开这本书,进入到javascript的世界.以前都是看各种视频,感觉什么收获也没有,反而弄得脑袋混乱,希望能够按照这本书的节奏掌握javascript这门语言,为我的前端学习打下基础. 学习前准备: ...
 - CSS 去除浏览器默认 轮廓外框
			
在默认情况下,点击 a 标签,input,或者添加click事件的时候,浏览器留下一个轮廓外框(chrome之下为蓝色)~ 然而这些默认的轮廓外框,有时候很影响美观,并不是我们想保留的. 我们应如何消 ...
 - php设计模式之单例模式
			
单例模式顾名思义,就是只有一个实例.作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的要点有三个: 一是某个类只能有一个实例: 二是它必须自行 ...
 - HTTP协议学习-03
			
浏览器访问一个网站,的原理图
 - Django - staticfiles,STATIC_ROOT, STATIC_URL,STATICFILES_DIRS
			
staticfiles:这是一个静态资源管理的app,django.contrib.staticfiles.老的版本中,静态资源管理一直是一个问题,部分app发布的时候需要带上静态资源,在部署的时候必 ...
 - C#.Net参数
			
C#.Net参数 阅读目录 引言 形参和实参 命名实参 可选参数 params,数目可变参数 方法解析与重载决策 参数传递 [重难点] ref引用参数/out输出参数 参数修饰符 泛型类 ...
 - 蓝牙-b
			
最近智能家居比较火,好多公司开始开发通过蓝牙对智能家居进行连接控制!下面,我就把自己总结的蓝牙方面的知识分享一下!求吐槽!!!!O(∩_∩)O... 1.导入头文件#import <CoreBl ...
 - 转:nginx防DDOS攻击的简单配置
			
文章来自于: 近期由于工作需要,做了些防DDOS攻击的研究,发现nginx本身就有这方面的模块ngx_http_limit_req_module和ngx_http_limit_conn_module. ...
 - 实现一个基于tcc/tlink的简单的编译链接工具
			
一.基础研究 在这里我们需要提供一套新的c语言开发工具cc,它支持的c程序不是从main开始运行而是从CMain开始运行. 书上已经对该工具程序进行了需求分析:(1)要在屏幕中间显示彩色的字符串:(2 ...
 
			
		