![](https://img-blog.csdnimg.cn/20190904113847341.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android
文章平均质量分 77
Ansen360
从事android手机系统开发7年,就职过2家国内知名手机公司
展开
-
DevicePolicyManagerService之DeviceAdmin
目录1.DevicePolicyManagerService的初始化2.DeviceAdminDevicePolicyManagerService是Android提供的一个可管理和操作设备的系统服务,通过DevicePolicyManager为应用层提供操作设备的对应策略.目前推出了三种设备管理方案:Device Administration,Profile Owner,Device Owner.DeviceAdmin是Android2.2中引入,用户可以授权自己的应用设备管理权原创 2022-04-09 22:45:45 · 4181 阅读 · 0 评论 -
DevicePolicyManagerService之DeviceOwner和ProfileOwner
1.ProfileOwnerProfileOwner是Android5.0系统推出.ProfileOwner包含了所有DeviceAdmin用户的管理能力.系统只能设置一个Profile Owner程序,并且设置为ProfileOwner后应用无法卸载.设置ProfileOwner具有MANAGE_PROFILE_AND_DEVICE_OWNERS权限和shell uid的应用程序才能调用此方法publicbooleansetProfileOwner(ComponentName,S...原创 2022-04-09 22:22:47 · 4658 阅读 · 1 评论 -
Android权限管理--权限类型
目录1.普通权限(normal)2.运行时权限(dangerous)3.签名权限(signature)4.特殊权限(privileged)查看android权限的等级判断应用是否拥有对应权限Android 将权限分为不同的类型,包括安装时权限、运行时权限和特殊权限。每种权限类型都指明了当系统授予应用该权限后,应用可以访问的受限数据范围以及应用可以执行的受限操作范围。1.普通权限(normal)此类权限允许访问超出应用沙盒的数据和执行超出应用沙盒的操作。但这些数据和操作对.原创 2022-03-14 17:28:35 · 14794 阅读 · 0 评论 -
四.Activity的启动流程-ActivityThread启动Activity的过程
Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.相关内容链接:android系统启动流程Activity的启动过程(应用的启动流程)原创 2020-07-14 21:42:13 · 1442 阅读 · 1 评论 -
三.Activity启动流程-AMS请求Zygote启动进程过程
Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.相关内容链接:android系统启动流程Activity的启动过程(应用的启动流程)原创 2020-07-14 21:41:41 · 1009 阅读 · 1 评论 -
二.Activity启动流程-ATMS到ApplicationThread的调用过程
Activity的启动一般分为普通Activity的启动,根Activity的启动.而根Activity是指应用启动的第一个Activity过程,所以也可以理解为应用的启动过程.相关内容链接:android系统启动流程原创 2020-07-14 21:38:12 · 1355 阅读 · 0 评论 -
Activity的启动流程(基于Android 10.0源码)
应用的启动流程大致分为如下四个阶段:一.应用进程(Launcher)调用ATMS系统进程的过程二.ActivityTaskManagerService到ApplicationThread的调用过程三.AMS向Zygote发送启动应用进程的过程四.ActivityThread启动Activity的过程原创 2020-05-13 00:41:08 · 1322 阅读 · 1 评论 -
Android Framework面试题
Framework面试题 Android 系统基础 JVM、Dalvik和ART是什么以及他们的关系 01 Binder机制 02 系统级app和第三方应用级app分别在什么目录下?system/priva-app和system/app目录的权限有什么...原创 2019-11-01 09:36:31 · 12674 阅读 · 1 评论 -
Android系统源码framework SystemUI导入eclipse编译
Android系统源码framework SystemUI导入eclipse编译原创 2015-09-23 01:53:47 · 8848 阅读 · 0 评论 -
Android系统源码Settings导入eclipse
## 导入Settings到eclipse> Settings路径: cm13.0/repo/packages/apps/Settings## 一、通过Android.mk文件查找依赖库原创 2015-09-23 01:51:21 · 7272 阅读 · 1 评论 -
Android Mms短信的发送流程,短信发送源码解析
发送前的校验从短信的点击按钮开始着手:// packages/apps/Mms/src/com/android/mms/ui/ComposeMessageActivity.java @Override public void onClick(View v) { mIsRTL = (v.getLayoutDirection() == View.LAYOUT原创 2015-10-28 02:00:27 · 6722 阅读 · 1 评论 -
Android APP 提高进程服务优先级 常驻内存 服务杀不死
首先明确,国内定制的系统(小米,华为,OPPO等)都实现了 无论自启或提升进程优先级的策略都能被杀死,而对于用户量大的APP(如微信)和系统级别APP 系统有做白名单;抛开那些定制系统,还是有很多原生系统没有这些策略,或者说那些系统优化策略不彻底,因此我们提升进程优先级才变得有意义1.针对系统签名APP 进程永驻(系统级别的kill和forceStop也杀不死)添加android:persiste...原创 2015-09-24 00:43:20 · 9624 阅读 · 1 评论 -
Android自定义软键盘输入法,隐藏系统输入法显示光标的实现
android实现自定义软键盘,先上图看效果,效果基本上是仿ios输入法实现的原创 2015-09-23 20:05:28 · 9388 阅读 · 2 评论 -
Monkey常用基本命令
Monkey命令语法:[adb shell] monkey [options] 例如: adb shell monkey -v 500// 产生500次随机事件Monkey的分类 [options]常用选项--help: 打印帮助信息-v:指定打印信息的详细级别(一个-v增加一个级别,默认级别为0)(Level 0) 缺省值,仅提原创 2015-09-24 00:36:15 · 5631 阅读 · 0 评论 -
BatteryHistorian环境搭建配置
BatteryHistorian环境配置1.Go语言环境配置1.下载安装(go1.8.windows-amd64.msi)https://www.golangtc.com/download 官方(https://golang.org/doc/install#testing)2.配置环境变量C:\Go\bin;2.Python环境配置下载安装(Python2.7)http...原创 2015-09-23 01:46:37 · 5248 阅读 · 0 评论 -
FileProvider文件共享FileUriExposedException异常解决
FileProvider是一个特殊的ContentProvider子类,它将 content:// Uri 代替了 file:/// Uri ,从而促进与应用程序关联的文件的安全共享.官方文档在Android N 7.0上,没有使用FileProvider访问其他文件可能会出现如下异常:AndroidRuntime: FATAL EXCEPTION: Thread-2An原创 2016-04-02 11:53:54 · 4980 阅读 · 0 评论 -
Android内存泄露OOM的原因及解决方法
什么是内存溢出? OOM(out of memory)即内存溢出.在程序中,对内存使用超过一定的阀值就会导致内存溢出,而new出来的Object对象在使用完后触发GC也无法被回收 叫做内存泄漏 OOM的可能导致的现象? 1.程序卡顿,响应速度慢(内存占用高时JVM虚拟机会频繁触发GC) 2.由于APP运行内存限制,会导致直接崩溃(OutOfMemoryError) 3...原创 2015-09-24 00:34:37 · 9310 阅读 · 1 评论 -
Android.mk编译脚本 & AndroidManifest.xml编写及注释
更新时间: 2019.04.17AndroidManifest.xml:android:sharedUserId="android.uid.systemui" //SystemUI属于系统apkcoreApp="true" //SystemUI属于核心apkandroid:persistent="true" //SystemUI不会被KILL,即被KILL后会自动重...原创 2015-09-23 01:34:36 · 12227 阅读 · 8 评论 -
Framework添加权限,系统服务AMS,PMS添加存储权限
查看当前进程所属的用户组1.通过过top命名查看,发现system_server PID 为2559xxx_ansen:/ #xxx_ansen:/ # topTasks: 225 total, 2 running, 208 sleeping, 0 stopped, 13 zombieMem: 8002760k total, 1630336k used, 63724...原创 2015-11-07 17:40:31 · 6714 阅读 · 3 评论 -
Android内存进程管理,Low Memory Killer机制
Android内存管理原创 2015-09-19 02:03:29 · 6137 阅读 · 0 评论 -
屏幕适配,px和dp, sp换算公式
换算公式:PPI =(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数px = dp*ppi/160dp = px / (ppi / 160)sp = px / (ppi / 160)需要熟悉px,dp和sp这些换算公式以及做屏幕适配,我们要需要清楚以下几个概念: px: 是英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分原创 2015-10-21 22:16:46 · 10702 阅读 · 1 评论 -
Android_PackageInstall源码
PackageInstall阅读packageInstall源码我们的突破口是从程序的窗口开始,首先查看AndroidManifest文件中activity的定义PackageInstallerActivity: 窗口指定了两个IntentFilter,因此两种方式调用该窗口,两种方式都定义了action:android.intent.action.INSTALL_PAC原创 2015-09-24 00:40:53 · 10301 阅读 · 1 评论 -
ActivityManagerService启动源码
ActivityManagerService是AndroidFramework的核心,它管理着Android系统中的4大组件:Activity、Service、ContentProvider和BroadcastReceiver,同时也管理和调度所有用户进程.AMS代码结构:ActivityManagerProxy是ActivityManagerNative的内部类,是Activit...原创 2015-10-28 01:59:39 · 3654 阅读 · 0 评论 -
AndroidIPC进程间通信 binder机制&aidl远程服务demo
Android系统中大量使用了基于C/S架构的通信方式,例如发送短信,拨打电话,视频音频捕获,传感器等都以服务(Service)的形式提供,并由相应的Server负责管理;应用程序作为Client只需要与这些Server建立连接并发送请求便能使用这些服务;因此,开发者完全不必关心Service的实现细节,直接与Server建立连接然后使用其提供的接口即可;Client和Server一般是运行在不同原创 2015-02-25 12:14:11 · 5478 阅读 · 2 评论 -
Android蓝牙开发和BLE通讯Demo
[源码地址](https://github.com/ansen360/CodeRepository/tree/master/app/src/main/java/com/code/bluetooth)原创 2015-09-19 01:37:26 · 7085 阅读 · 0 评论 -
Android ANR log trace日志文件分析
什么是ANR? ANR:Application Not Responding,即应用无响应 ANR日志Trace文件获取 系统生成的Trace文件保存在data/anr,可以用过命令adb pull data/anr/取出 traces.txt只保留最后一次ANR的信息,Android系统有个DropBox功能功能,它能记录系统出现的crash错误.因此保留有发生过的AN...原创 2015-10-14 01:49:38 · 23295 阅读 · 1 评论 -
ConstraintLayout用法及和RelativeLayout测试对比性能
ConstraintLayout 简介:ConstraintLayout是Android Studio 2.2中主要的新增功能之一,它可以在不嵌套任何布局的情况下构建复杂的布局.它与RelativeLayout非常相似,所有的view都依赖于相邻控件的相对关系.而ConstraintLayout比RelativeLayout更加灵活,在AndroidStudio中进行拖拽即可完成布局....原创 2017-11-03 11:06:58 · 5561 阅读 · 1 评论 -
Android adb命令大全
adb命令:adb remount // 将system分区重新挂载为可读写分区 adb get-serialno // 获取序列号 adb reboot bootloader // 重启到bootloader,即刷机模式 adb reboot recovery // 重启到recovery,即恢复模式 adb shell cat /sys/class/net/wlan0/addres...原创 2015-12-09 01:00:34 · 3321 阅读 · 1 评论 -
Linux常用基本命令&Android系统编译命令
Linux命令:touch 创建文件touch framework/base/Android.mk // 创建文件夹mkdir 创建文件夹cat 显示文件所有内容(合并文件)cat aa文件 bb文件(可以多个) > 合并到的aabb文件cat framework/base/Android.mk // 查看文件echo // 输出原创 2015-12-09 01:05:47 · 4428 阅读 · 1 评论 -
Android APP性能优化之 ---- 内存优化(二)
由于Android应用的沙箱机制,每个应用所分配的内存大小是有限度的,因此内存会显得非常珍贵,如果我们的内存占用超过了一定的水平就会出现OutOfMemory错误内存概述RAM(random access memory)随机存取存储器.(通俗的说就是内存)Java的内存分配策略:Java内存分配时会涉及到以下区域:栈(Stack):一些基本类型的变量和对象的引用都是在栈内存中...原创 2018-04-26 11:05:17 · 1096 阅读 · 0 评论 -
Android加速度传感器 -- 抬手亮屏
android系统提供以下传感器供应用层使用,具体如下:// android.hardware.SensorTYPE_ACCELEROMETER 1 // 加速度传感器TYPE_MAGNETIC_FIELD 2 // 磁力传感器TYPE_ORIENTATION 3 // 方向传感器TYPE_GYROSCOPE 4 // 陀螺...原创 2018-06-06 14:46:20 · 7438 阅读 · 1 评论 -
Android OTA差分包升级失败
升级失败log如下:I update_engine: [0530/162336:INFO:delta_performer.cc(359)] Applying 21701 operations to partition "system"E update_engine: [0530/162336:ERROR:delta_performer.cc(1060)] The hash of the sour...原创 2018-06-01 15:24:04 · 7562 阅读 · 12 评论 -
Android9.0 P 电源管理&android各版本电量优化功能策略
针对电量优化android的改动在最近几个android版本中已存在的电量优化功能基础上,Android 9 引入了一些新功能来持续改进设备电源管理,以确保将系统资源提供给最需要它们的应用.近几个android版本中电量优化功能:Android 5.0 Lollipop: 1.新增 Job Scheduling API 可以将作业推迟(合并)到稍后或指定条件下(如设备充电...原创 2018-10-24 18:52:20 · 8080 阅读 · 2 评论 -
Android8.0后台服务限制适配
Android8.0的后台服务限制导致如下报错:--------- beginning of crashE/AndroidRuntime( 4237): FATAL EXCEPTION: mainE/AndroidRuntime( 4237): Process: com.ansen.appsettings, PID: 4237E/AndroidRuntime( 4237): jav...原创 2018-12-05 17:14:36 · 1729 阅读 · 1 评论 -
Kotlin基础语法
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源.Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行.在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言.Kotlin实现 He...原创 2019-03-13 09:29:21 · 876 阅读 · 1 评论 -
Android应用面试题及答案汇总
android面试题2019 答案 Java 基础 String、StringBuffer、StringBuilder的区别 03 进程和线程的区别;多线程与线程池 16 java中equals和==的区别 ...原创 2019-10-08 16:57:12 · 1641 阅读 · 2 评论 -
android home键,back返回键监听,Window窗体监听返回键
在Activity中监听或拦截返回键重写dispatchKeyEvent()方法 @Override public boolean dispatchKeyEvent(KeyEvent event) { if(event.getKeyCode()==KeyEvent.KEYCODE_BACK){ Log.d("ansen", "KEY原创 2016-03-30 22:58:37 · 3579 阅读 · 1 评论 -
AndroidStudio导入系统源码DeskClock编译生成系统签名apk
DeskClock源码路径:/repo/packages/apps/DeskClock/导入DeskClock源码到AndroidStudio1.拷贝源码到AS工程使用AndroidStudio创建DeskClock工程,指定Android源码相同的包名把DeskClock中src、res、AndroidManifest.xml、assets复制到创建的AS工程中...原创 2015-09-23 01:45:49 · 6253 阅读 · 1 评论 -
Android APP性能优化之 ---- 代码优化(三)
编码优化相关: - 避免创建不必要的对象创建新的对象都需要额外的内存空间,要尽量减少创建短生命周期的临时对象;减少对象的创建就能减少垃圾收集,进而提升性能场景:1.频繁的字符串拼接使用StringBuffer或者StringBuilder,而不是加号拼接,因为使用加号拼接会产生中间字符串内存块,拼接的字符串越长,性能越低.2.尽量使用基本数据类来代替对象数据类型(int比Integ...原创 2015-09-19 01:30:07 · 4730 阅读 · 0 评论 -
Settings7.0添加新菜单列表项源码分析 Fragment配置Activity启动入口
Android6.0 Settings是通过加载dashboard_categories.xml,获取显示列表,所以在6.0上可以直接在dashboard_categories.xml添加icon、title、summary,同时也可以添加目标fragment和Intent.Android 7.0是通过在Androidmanifest.xml中配置intent-filter的Action,然后对指...原创 2017-06-08 17:43:34 · 3447 阅读 · 1 评论