
Android
文章平均质量分 61
Android Api
he先森
这个作者很懒,什么都没留下…
展开
-
Gradle脚本使用
【代码】Gradle脚本使用。原创 2024-03-19 14:44:51 · 207 阅读 · 0 评论 -
谷歌游戏客户端登录
谷歌游戏客户端登录API:https://developers.google.com/games/services/android/quickstart谷歌游戏客户端demo下载:https://github.com/playgameservices/android-basic-samples1、下载示例demo1、下载android-basic-samples2、导入Basi原创 2017-06-08 18:36:04 · 3718 阅读 · 0 评论 -
Android 6.0-14.0系统兼容
1、新增运行时权限。2、Android 6.0 版本删除了对 Apache HTTP 客户端的支持,要继续使用 Apache HTTP API,必须在build.gradle文件中声明以下编译时依赖项原创 2022-07-15 18:38:09 · 9557 阅读 · 0 评论 -
CPU架构兼容
在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。转载 2022-06-16 18:56:34 · 629 阅读 · 0 评论 -
使用OAuth 2.0访问Google API
从2016年10月20日开始,谷歌将阻止新的OAuth的客户端使用可行的替代方案在平台上使用网页浏览,并将针对现有的OAuth客户端的面向用户的通知进行阶段化。在2017年4月20日,谷歌将开始使用在可行的替代方案的平台上的所有的OAuth客户端的网页浏览来阻止OAuth的请求。并且开始使用OAuth2.0协议。OAuth2.0接入文档https://codelabs.developers.原创 2017-06-05 17:25:27 · 2434 阅读 · 0 评论 -
Android 中判断apk中是否包含某个class或者so文件
【代码】Android 中判断apk中是否包含某个class或者so文件。原创 2022-12-09 13:03:53 · 1154 阅读 · 0 评论 -
Handler源码解析
在android开发中,经常会在子线程中进行一些操作,当操作完毕后会通过handler发送一些数据给主线程,通知主线程做相应的操作。探索其背后的原理:子线程 handler 主线程其实构成了线程模型中的经典问题生产者-消费者模型。生产者-消费者模型:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加数据,消费者从存储空间中取走数据。原创 2022-11-14 18:57:10 · 200 阅读 · 0 评论 -
安卓获取及监听手机网络状态
一、获取当前手机联网方式是WiFi还是手机4G数据private boolean getNetworkType(){ ConnectivityManager mConnectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //检查网络链接 NetworkInfo info = mConnectivity.getActiveNetworkInfo();原创 2022-01-06 17:37:40 · 2425 阅读 · 0 评论 -
技术文章汇总
一、安卓相关1、Binder红茶一杯话Binder(初始篇) 写给 Android 应用工程师的 Binder 原理剖析 Android Bander设计与实现 - 设计篇 Binder学习指南 Binder系列—开篇 Android跨进程通信:图文详解 Binder机制 原理 Android深入浅出之Binder机制 认真分析mmap:是什么 为什么 怎么用 Android 进阶8:进程通信之 Binder 机制浅析 老罗:Android进程间通信(IPC)机制Binder简要介原创 2020-12-04 14:12:34 · 207 阅读 · 0 评论 -
Activity启动流程(Android 10源码分析)
下面的源码分析,将按照上图的流程图一步一步分析一、启动进程启动Activity先从startActivity开始,点进startActivity进入ContextWrapper类中,↓ @Override public void startActivity(Intent intent) { mBase.startActivity(intent); }上图中mBase对象是Context,Context的实现类为ContextImpl,进入Conte..原创 2020-10-16 17:58:45 · 4018 阅读 · 3 评论 -
手写一个AIDL
客户端demo:https://github.com/hewind/AidlClientTest服务端demo:https://github.com/hewind/AidlServerTest实现功能:增加人人员、删除人员、获取人员信息;一、客户端1、创建PersonBean实体类public class PersonBean implements Parcelable { private String name; public PersonBean(String原创 2020-09-11 16:59:18 · 2574 阅读 · 0 评论 -
RxBus传递消息
public class BaseRxBus { private final FlowableProcessor<Object> mBus; private BaseRxBus() { mBus = PublishProcessor.create().toSerialized(); } private static class H...原创 2018-10-22 17:54:33 · 839 阅读 · 0 评论 -
Android studio 生成aar包,不把第三方jar打进去的两种方式
一、第一种方式1、新建一个mylibs文件夹(名字只要与工程里的libs不冲突就行),把不参与打包的jar包放进去2、在gradle中添加依赖,依赖方式使用 compileOnly,compileOnly表示只参与编译,不参与打包repositories{ flatDir{ dirs 'libs' dirs 'mylibs' }}...原创 2019-04-24 15:48:51 · 5684 阅读 · 6 评论 -
安卓项目依赖library,同时需要依赖library中libs下aar文件的两种依赖方式
先在library中添加aar依赖//添加一个本地仓库,并将libs目录作为仓库地址repositories{ flatDir { dirs 'libs' }}dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation (n...原创 2019-04-25 15:20:05 · 3387 阅读 · 0 评论 -
获取屏幕分辨率
第一种 不含状态栏public int getWindowWidth(){ WindowManager wm = (WindowManager) (this.getSystemService(Context.WINDOW_SERVICE)); DisplayMetrics dm = new DisplayMetrics(); assert wm...原创 2019-05-17 19:35:16 · 4656 阅读 · 0 评论 -
Android文件路径获取
Android文件存储分为内部和外部存储一、内部存储getFilesDir()= /data/data/com.example.cjmsdkdemo/filesgetCacheDir() = /data/data/com.example.cjmsdkdemo/cache此存储路径不需要申请读写sd卡权限;二、外部存储Environment.getExternalStora...原创 2019-09-12 14:46:11 · 1240 阅读 · 0 评论 -
6.0运行时权限与targetSdkVersion选择
targetSDKVersion简单来说就代表着你的App能够适配的系统版本,意味着你的App在这个版本的手机上做了充分的前向兼容性处理和实际测试。其实我们写代码时都是经常干这么一件事,就是if(Build.VERSION.SDK_INT >= 23) { ... },这就是兼容性处理最典型的一个例子。如果你的target设置得越高,其实调用系统提供的API时,所得到的处理也是原创 2017-05-09 14:52:34 · 7543 阅读 · 1 评论