- 博客(18)
- 收藏
- 关注
原创 一步步教你如何简单自定义 ADB 指令
adb 指令相信大家都用得不少,但是自定义 adb 指令不知道大家又试过没有?最近公司有一个需求,需要自定义 adb 指令来对手机硬件进行测试,这篇博客我们就来一起聊一聊我的实现方法,希望能帮助到有相似需求的朋友。我们先来看看常用的 adb 指令,比如启动活动和服务等:启动活动: adb shell am start启动服务: adb shell am startservice 具体指令...
2019-03-11 19:01:52
4860
1
原创 一步步告诉你 Android 应用层是如何调用系统服务的
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...
2018-08-07 22:01:47
3414
原创 Android 8.0 java.lang.SecurityException: Failed to find provider <authority> for user 0 产生原因以及解决方法。
Android 版本每次的更新除了新功能之外,通常还伴随着各种 API 的更新以及随之而来的异常,8.0 的更新也不例外。当我们在 8.0 或 8.1 系统上使用 26 或以上的版本的 SDK 时,调用 ContentResolver 的 notifyChange 方法通知数据更新,或者调用 ContentResolver 的 registerContentObserver 方法监听数据变化时...
2018-04-24 16:53:52
15939
8
原创 通过一个简单的音乐播放器探讨 Android Aidl 的实现原理
众所周知,音乐播放器的播放不应该在前台进程,而是要私有进程的 Service 中进行,这样才能实现后台播放功能,同时不影响 UI 进程且不共用内存资源从而减少双方被 kill 的可能性。 由于不同进程间是无法直接通信的,因此在这种情况我们会使用 AIDL 去实现进程间通信。那么为什么使用 AIDL 就能实现进程间通信呢?AIDL 实质上做了什么呢?我们接下来通过实现一个音乐播放器来了解下。我们先来
2018-03-20 19:22:15
1982
原创 Android MTK N 平台上如何在桌面上添加未接来电和未接信息数字角标
本篇博客我们来实现在桌面上添加未接来电和未接信息数字角标的功能。想要实现这个功能,我们需要监听到未接来电/未接短信的变化,同时获取到未接来电/未接短信的数量,当监听到变化时对对应的图标进行重绘,在图标左上角添加上对应的角标。未接短信我们可以通过接收 Intent.ACTION_UNREAD_CHANGED 这个广播 Action 来监听未接短信数量的变化,同时通过 Intent.EXTRA_UNRE
2017-11-07 15:56:09
1525
4
原创 Android MTK N 平台上如何添加双卡铃声功能
在 MTK M 平台上,是自带双卡铃声功能,因此部分客户升级到 N 平台之后,也会有这样的要求。那么我们就来看看如何实现这一功能。实现这功能主要从 3 个模块入手,分别是 settings 上的设置显示界面、framework 上的 RingtoneManager 和 package/services/Telecomn 上的播放铃声的对应文件。实现思路如下:首先我们需要在 settings 上,模仿
2017-10-30 11:32:28
1110
原创 Android中关于AudioFocus你所该知道的知识
一:首先我们来了解下什么是AudioFocus:AudioFocus是Android引入的一个Audio协调机制,当多方需要使用Audio资源时,可以通过AudioFocus机制来协调配合,提高用户的体验。需要注意的一点是:该机制需要开发者主动去遵守,比如A应用没遵守该机制,则其它遵守了该机制的应用是完全没办法影响A应用的。二:为什么要使用AudioFocus:试想下后台在播放着音乐的时候你点开了某
2017-03-10 18:07:51
3697
1
原创 一步步浅析Android系统导航栏(NavigationBar)
Android手机可分为有导航栏以及没导航栏两种,一般有物理按键的机器不会带有导航栏,而没有物理按键的机器则基本会带,比如华为的手机基本都是带导航栏的。导航栏是如何加载到桌面上?是如何实现与物理按键相同的功能的呢?带着种种疑问,我们来read the fucking code。导航栏是属于系统界面的一部分,也就是SystemUI。在SystemUI中导航栏实质上是一个继承LinearLayout的V
2017-03-01 16:20:54
13249
2
原创 一步步教你如何使用Android自定义权限。
在Android开发的过程中我们少不了要与权限打交道,在这过程中我们自然会想:为什么有些操作需要权限,有些操作不需要呢?系统是怎么配置操作所需要的权限呢?带着这些问题,我们来分析一个常见的操作——打电话。事例代码如下:CallActivity.java:public class CallActivity extends AppCompatActivity { @Override pro
2017-02-21 12:28:28
12824
3
原创 处理AppCompatActivity中openOptionsMenu方法无效的问题
重写openOptionsMenu: @Override public void openOptionsMenu() { final View toolbar = getWindow().getDecorView().findViewById(R.id.action_context_bar); if (toolbar instanceof Toolbar
2017-02-14 16:04:40
3555
原创 Android中<xliff:g></xliff:g>的用法
在查阅修改Android源码的过程中经常能在字符串资源中看到类似下面的标签:<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="xliff_string"> 今天是<xliff:g id="WEEK">%1$s</xliff:g>,<xliff:g id="DAY">%2$d
2017-02-13 20:27:27
4922
原创 Android中View的Clickable和Enabled的区别与原理
View的setClickable(setLongClickable方法与此类似)和setEnabled方法相信大家都用过,根据方法名来理解就是设置View可不可以点击以及可不可用,但是可不可以点击以及可不可用具体表现出来又是怎样呢?他们之间又有什么区别呢?在看源码之前可能心里多多少少有点迷糊,那么,我们就来到源码里一探究竟。阅读本篇文章需要了解基本的事件分发机制,不了解的可以先去郭霖大神的博客学习
2017-02-06 17:59:47
18511
4
原创 一步步客制化Android桌面(Launcher3)图标
由于最近在负责MTK5.1的Android系统开发,所以本文就以5.1的代码为参考。其它版本虽然会略有不同,但是修改思路是大致相同的。在市面上很多手机都会对原生桌面进行一些修改,比如把时钟、日历修改成动态显示,或者对整个界面风格进行修改。那么我们就来模仿一下,简单地修改原生应用的图标显示,从而达到修改主题样式的目的。5.1上的Android桌面,其实也就是Launcher3,位置是 alps\pa
2017-02-06 14:13:13
6221
原创 对Android运行时权限的简单封装
相信绝大部分的Android开发者对运行时权限都是很熟悉了的,毕竟运行时权限的用法并不难。但是每次申请权限都要重新编写重复的代码还是很费时间,因此我按照自己的风格对运行时权限进行了简单的封装,下面就把代码贴出来,希望和大家共同分享研究。public class PermissionHelper { private PermissionHelper() { } public sta
2017-01-31 18:39:06
648
原创 CoordinatorLayout中的嵌套滑动和Behavior
下图是CoordinatorLayout布局中很常见的一种效果,很多人应该都见过,当我们用手指滑动RecyclerView的时候,不单止RecyclerView会上下滑动,顶部的Toolbar也会随着RecyclerView的滑动隐藏或显现,实现代码的布局如下:<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.
2017-01-14 22:18:56
9668
原创 Activity的启动模式
Activity是Android四大组件中最常用的组件了,而它的多种启动模式也是我们必须掌握的基本内容,今天我们就来了解一下它的各种启动模式的效果。我们可以在AndroidManifest.xml中通过android:launchMode=”“中指定活动被启动时的启动模式,或者通过在启动活动的Intent中设置Flag来指定。android:launchMode通过android:launchMod
2017-01-02 19:20:05
601
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人