- 博客(16)
- 资源 (2)
- 收藏
- 关注
原创 android自定义permission android:protectionLevel说明
Android protectionLevel分4个级别:normal、dangerous、signature、signatureOrSystem;normal:这是最低风险的权限,如果应用声明了此权限,也不会提示安装应用的用户授权(例如,如果声明了定位权限,则应用到定位功能时,会明确提示用户,是否授予定位权限,但是protectionLevel为normal的不会明确提示,直接默认授予),系统直接默认该应用有此权限;dangerous:这种级别的权限风险更高,拥有此权限可能会访问用户私人数据或者
2020-08-25 09:23:19
738
转载 23种设计模式之单例模式
意图确保某一个类只有一个实例,而且实例化并向整个系统提供这个实例。适用性确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源。类图###关键点1.构造函数不对外开放,一般为Private;2.通过一个静态方法或者枚举返回单例类对象;3.确保单例类的对象有且只有一个,尤其是在多线程环境下;4.确保单例类对象在反序列化时不会重新构建对象;单例模式的6种实现方式饿汉模式pu
2020-07-12 17:25:03
203
原创 Android9.0 SystemUI 屏蔽打开wifi时不显示4G图标的逻辑
Android 9.0 中打开wifi时,不显示4G图标,只有信号值,现项目需求在打开wifi时仍然显示4G图标。排查及修改过程如下:systemui/src/com/android/systemui/statusbar/StatusBarMobileView.javaprivate void updateState(MobileIconState state) { //省略部分代码 if (mState.typeId != state.typeId) { if (s
2020-07-02 18:56:32
1246
原创 AndroidStudio编译单个Module
AS编译单个Module:在Terminal标签下输入:gradlew :your_module_name:task_name举例:gradlew :app:assembleRelease编译完成:
2020-06-28 11:38:43
1636
原创 23种设计模式之代理模式
意图为其他对象提供一种代理以控制对这个对象的访问。适用性适用代理模式常见情况:1.远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表;2.虚代理(Virtual Proxy)根据需要创建开销很大的对象,比如我们从网站上下载一张大图时,可以先显示默认图,下载完成后再显示真正的图;3.保护代理(Protection Proxy)控制对原始对象的访问,用于对象应该有不同的访问权限的时候。4.智能指引(Smart Reference)取代了简单的指针,在访问对象时执行一些附加操
2020-06-25 11:12:08
432
原创 Android录屏命令screenrecord命令的使用
adb shell screenrecord --time-limit 20 /sdcard/test.mp4–time-limit 设置时间长度,默认180秒Ctrl+C 结束录屏通过screenrecod --help帮助命令查看提示选项: $ screenrecord --helpUsage: screenrecord [options] <filename>Android screenrecord v1.2. Records the device's display to
2020-06-24 18:00:02
1731
原创 浮窗WindowManager addView响应返回按键
显示悬浮框,注意一定不要设置WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,拿不到Focus是接收不到back事件的。private void showPreviewDialog(){ View mPreviewLayout = LayoutInflater.from(getContext()).inflate(R.layout.window_preview,null); WindowManager.LayoutParams layoutPara
2020-06-23 21:08:17
1575
原创 Android9.0 SystemUI通知显示流程
系统会通过两个方法将通知上报给SystemUI的NotificationListener类:@Overridepublic void onListenerConnected() { if (DEBUG) Log.d(TAG, "onListenerConnected"); onPluginConnected(); final StatusBarNotification[] notifications = getActiveNotifications(); if (noti
2020-06-23 16:57:00
1460
1
原创 23种设计模式之装饰模式
意图动态地给一个对象添加一些额外的职责。别名装饰模式Decorator也称包装模式Wrapper动机有时我们希望给某个对象而不是整个类添加一些功能。适用性以下情况适用装饰模式:1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。2.处理那些可以撤销的职责。3.当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量的独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸式增长。另一种情况可能是因为类定义被隐藏或者类定义不能用于生成子类。类图角色介绍Co
2020-06-21 19:24:30
312
原创 android9.0 修改状态栏图标的顺序
原理com.android.systemui.statusbar.phone/StatusBarIconControllerImpl.java类的构造方法中读取com.android.internal.R.array.config_statusBarIcons,按照此数组的顺序排序,如果需要修改顺序,则需要修改此文件。 public StatusBarIconControllerImpl(Context context) { super(context.getResources().g
2020-06-17 18:21:00
1309
原创 Android9.0 状态栏图标显示“点号”怎么办
现象状态栏图标显示的个数有两个限制:1.最大个数限制8个(包括battery):2.宽度限制;最终能够显示的图标个数取这两个限制的较小值。相关代码逻辑在com.android.systemui.statusbar.phone/StatusIconContainer.java类中: // Max 8 status icons including battery private static final int MAX_ICONS = 7;@Override protected vo
2020-06-17 18:02:44
1243
2
原创 Android9.0 修改状态栏图标之间的间距
操作com.android.systemui.statusbar.phone/StatusBarIconController.java类中修改如下方法:@VisibleForTesting protected StatusBarIconView addIcon(int index, String slot, boolean blocked, StatusBarIcon icon) { StatusBarIconView view =
2020-06-17 17:42:46
2289
原创 Android Paint Style 如何正确画一个空心矩形
Android在用画笔的时候有三种Style,分别是Paint.Style.STROKE 只绘制图形轮廓(描边)Paint.Style.FILL 只绘制图形内容Paint.Style.FILL_AND_STROKE 既绘制轮廓也绘制内容那么如何正确画一个空心矩形呢?比如我们现在要画一个200x200像素,轮廓宽度为40像素的空心矩形,显示效果如下,上面的粉色是宽度为200像素的view。代码如下:<ImageView android:id="@+id/imageview
2020-06-14 16:52:57
2326
2
原创 Calabash android搭建本地环境
Calabash android 搭建本地环境安装rbenv官方链接 How to install Homebrew ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” Installing rbenv and ruby-build git clone https
2016-03-21 15:42:42
453
原创 Calabash 快速入门 (Android)
Calabash 快速入门 (Android)概述本篇包括以下内容: 环境:mac/android studio 目标:用Calabash实现一个简单app的自动化测试 测试用例:信用卡的长度为16位 实现过程:搭建环境,编写APK,写测试用例,运行流程安装Calabash沙箱编写app写测试脚本在模拟器或者真机上运行测试脚本,以及上传到cloudtest.xamarin.coms
2016-03-18 18:35:15
2382
转载 关于Android的.so文件你所需要知道的
原文链接原英文链接因近期引用到百川即时通讯SDK时,遇到一些.so方面的问题,现转载此篇文章,以做记录。早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种!Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x
2016-03-18 12:42:46
346
android包名以及签名查看器
2015-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人