自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Android 获取手机屏幕的真实宽高和可用宽高

不知道你们遇没遇到过h5页面加载全屏网络图片屏幕下面有白边的bug,之所以会这样是因为H5获取的屏幕宽高值是可用宽高值(不包括底部虚拟导航栏),而不是真实的屏幕的宽高(包括底部虚拟导航栏)。话不多说,直接上代码,就是干!!!import android.content.Context;import android.graphics.Point;import android.os.Buil...

2019-10-11 15:27:22 2138 1

原创 Android 跳转到华为钱包、小米钱包、Samsung Pay、OPPO钱包、魅族钱包主页面

最近做的一个金融项目中有一个跳转到手机自带的钱包APP的首页的需求,咋一看这还不简单,但是网上一搜资料特别少,连华为钱包、小米钱包、SamsungPay这些应用的包名都找不到,就更别说这些应用的主页面的全路径了。最终经过真机连通Android Studio 查看日志才获取这些关键信息,以下是实现的核心代码,请诸位参阅!package com.yongbo.wallet;import an...

2019-10-11 14:51:16 2364

原创 Android 打Release包后发现数据返回正常但不能正常显示和使用

问题描述项目1.0.0版本基本实现后,打正式包进行安装测试的时候发现接口返回数据都是正常的,但是页面上却显示不了,还有就是登录接口持久化到本地的用户信息也无法获取。问题原因混淆时混淆了业务(bean/model)类代码,使得不能解析出相应对象,取不出数据。与服务端交互时,使用GSON、fastjson等框架解析服务端数据时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的...

2019-01-28 17:11:15 3039

原创 Android常用的算法总结

一、二分查找法注意:必须有前提,数组中的元素要有序。public static int halfSeach_2(int[] arr, int key) { int min, max, mid; min = 0; max = arr.length - 1; mid = (max + min) >> 1; //(ma...

2018-11-20 09:45:50 2046 1

原创 Android root检测方法总结

一 为什么要进行root检测?出于安全原因,我们的应用程序不建议在已经root的设备上运行,所以需要检测是否设备已经root,以提示用户若继续使用会存在风险。二 root了会有什么风险?在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者。 在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外。root用户...

2018-11-05 15:10:02 7692 1

原创 RxJava2 入门详细笔记(四)—— 过滤操作符和条件操作符

一、过滤操作符1.1、filter()通过一定逻辑来过滤被观察者发送的事件,如果返回 true 则会发送事件,否则不会发送 Observable.just(1, 2, 3, 4).filter(new Predicate<Integer>() { @Override public boolean test(In...

2018-10-25 14:28:44 747

原创 RxJava2 入门详细笔记(三)—— 功能操作符

一、功能操作符1.1、delay()延迟一段事件再发送事件 Observable.just(1, 2, 3) .delay(3, TimeUnit.SECONDS) .subscribe(new Consumer<Integer>() { @Overrid...

2018-10-25 12:23:56 298

原创 RxJava2 入门详细笔记(二)—— 转换操作符和组合操作符

一、转换操作符1.1、map()map() 用于将被观察者发送的数据类型转变成其他的类型 Observable.just(1, 2, 3) .map(new Function<Integer, String>() { @Override public String apply(Integer integ...

2018-10-25 10:06:01 229

原创 RxJava2 入门详细笔记(一)—— 概述和创建操作符

一、概述在 RxJava 中,一个实现了 Observer 接口的对象可以订阅一个 Observable 类的实例。订阅者对 Observable 发射的任何数据或数据序列作出响应。这种模式简化了并发操作,因为它不需要阻塞等待 Observable 发射数据,而是创建了一个处于待命状态的观察者哨兵,哨兵在未来某个时刻响应 Observable 的通知。RxJava 提供了一套异步编程的 API...

2018-10-23 17:23:22 180

原创 Android 内存泄露小结

java内存的分配策略Java 程序运行时的内存分配策略有三种,分别是静态分配,栈式分配,和堆式分配,对应的,三种存储策略使用的内存空间主要分别是静态存储区(也称方法区)、栈区和堆区。静态存储区(方法区):主要存放静态数据、全局 static 数据和常量。这块内存在程序编译时就已经分配好,并且在程序整个运行期间都存在。 栈区 :当方法被执行时,方法体内的局部变量(其中包括基础数据类型、对...

2018-10-23 10:28:27 176

原创 Android P 版本中支持全面屏检测的api

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { WindowInsets windowInsets = decorView.getRootWindowInsets(); if (windowInsets != null) { DisplayCutout displayCutout = windowI...

2018-10-22 14:31:48 1127

原创 Socket通信:TCP传输和UDP传输

Socket,即套接字,通信的端点。就是为网络服务提供的一种机制,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。一、TCP传输TCP传输:两个端点的建立连接后会有一个传输数据的通道,这通道称为流,而且是建立在网络基础上的流,称之为socket流。该流中既有读取,也有写入。tcp的两个端点:一个是客户端,一个是服务端。 客户端:...

2018-09-12 11:07:03 374

原创 Android 基于Retrofit2.0的支持多主机地址的网络请求类的封装

一、首先在Module级别的build.gradle文件中添加依赖implementation 'com.squareup.retrofit2:retrofit:2.3.0'implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'implementation 'com.squareup.retrofit2:converte...

2018-09-12 10:50:45 338

原创 kotlin基本语法

/*--------------------------定义函数开始-------------------------*/ /** * 带有两个Int参数、返回Int的函数 */ fun sum(a: Int, b: Int): Int { return a + b } /** * 将表达式作为函数体、返回值类型自动...

2018-09-12 10:18:51 200

原创 Android 9 Pie 兼容性常见问题及注意事项

应用不兼容的常见原因:1、使用了系统的 ClassLoader 加载 org.apache.http.* 的库Android M 就已经开始移除对 Apache HTTP client 的支持。而 Android P 的系统 ClassLoader 已经不支持加载 org.apache.http.包 (抛出 NoClassDefFoundError),应用必须用自定义的 ClassLoad...

2018-09-11 09:47:48 710

原创 Only fullscreen opaque activities can request orientation

开发阶段一直都是使用Android的模拟器在测试项目,今天运行到Android 8.0真机上,我靠,打脸了,上来就崩了,连首页都没进去啊。。。 造成在splash页面崩溃的原因是:Only fullscreen opaque activities can request orientation 即只有全屏不透明的活动才能请求定向。之所以出现这样的问题,是因为我们为了提高用户体验,手动取消...

2018-09-06 11:23:17 812

原创 No such property: FOR_RUNTIME for class: org.gradle.api.attributes.Usage

问题产生 使用Android studio 3.1.4(最低Gradle版本为4.4)从github上clone项目编译时报以下错误:No such property: FOR_RUNTIME for class: org.gradle.api.attributes.Usage错误原因 产生这个问题的原因是项目中有Module使用了bintray插件解决方案 在Module的bu...

2018-09-04 14:29:35 686

原创 Android Studio 中 Gradle 依赖的统一管理

一 为什么我们要对 Gradle 统一管理?在工作中我们所接触的项目一般都是一个Project中至少会存在两个甚至多个Module。试想,如果每个Module又同时拥有相同的依赖,比如v4、v7,当进行版本升级的时候岂不是每个Module的build.gradle文件都要改动,这样不仅麻烦不利于维护而且容易出错,所以,将依赖进行统一管理,这对于一个 Project 下拥有多个 Module 的...

2018-09-02 20:29:57 261

原创 Android中使用logger打印完整的okhttp网络请求和响应的所有相关信息(请求行、请求头、请求体、响应行、响应行、响应头、响应体)

如果你的项目中的网络请求库是Retrofit的话,他的底层封装的是OkHttp,通常调试网络接口时都会将网络请求和响应相关数据通过日志的形式打印出来。OkHttp也提供了一个网络拦截器okhttp-logging-interceptor,通过它能拦截okhttp网络请求和响应所有相关信息(请求行、请求头、请求体、响应行、响应行、响应头、响应体)。使用okhttp网络日志拦截器需添加以下依赖...

2018-08-31 14:49:56 5911

原创 java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security polic

Android P http网络请求的问题Google表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Securi...

2018-08-30 16:37:57 23661 41

原创 使用Git生成SSH key

由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key。第1步:创建SSH Key。在windows下查看[c盘->用户->自己的用户名->.ssh]下是否有id_rsa、id_rsa.pub文件,如果没有需要手动生成。 打开git bash,在控制台中输入以下命令:$ ss...

2018-08-29 14:53:50 263

原创 Socket通信:TCP传输和UDP传输

Socket即套接字,通信的端点。就是为网络服务提供的一种机制,通信的两端都有Socket,网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。

2018-08-28 16:11:45 477

原创 Android 基于Retrofit2.0的支持多主机地址的网络请求类的封装

一、首先在Module级别的build.gradle文件中添加依赖implementation 'com.squareup.retrofit2:retrofit:2.3.0'implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'implementation 'com.squareup.retrofit2:converter...

2018-08-21 14:01:48 1208 5

原创 kotlin基本语法

/*--------------------------定义函数开始-------------------------*/ /** * 带有两个Int参数、返回Int的函数 */ fun sum(a: Int, b: Int): Int { return a + b } /** * 将表达式作为函数体、返回值类型自动推...

2018-08-06 14:16:30 209

原创 解决Android Studio 3.1中使用Logger(com.orhanobut:logger:2.2.0)打印日志排版出现错乱的问题

先晒一张使用第三方Logger日志库打印日志出现排版错乱的情况的图片:排版错乱原因:The problem can be produce when trying to log message at very small time intervals, maybe some behavior of logcat has been changed in Android Studio v3....

2018-07-25 13:38:25 4505 3

原创 使用Gradle查看Android依赖树图

之前查看安卓依赖树一直使用的是下面的命令  ./gradlew :app:dependencies  或者直接在右边的gradle快捷命令里操作 虽然这个命令也能达到目的,但是它会将gradle执行的各个步骤下的依赖树全部打印出来,包括 debugApk、debugCompi

2018-07-20 14:34:30 4258

原创 Cannot resolve symbol 'Theme' in styles.xml (Android Studio)

Another solution that worked for me with Android Studio 3.1.2:delete these from build.gradle if you have them:'com.android.support:appcompat-v7:27.1.1''com.android.support:design:27.1.1'then s...

2018-07-20 14:11:09 1764

原创 Android 权限大全

1.android.permission.WRITE_USER_DICTIONARY  允许应用程序向用户词典中写入新词2.android.permission.WRITE_SYNC_SETTINGS  写入Google在线同步设置3.android.permission.WRITE_SOCIAL_STREAM  读...

2018-07-18 14:23:03 298

原创 Android 危险权限大全

前言:Android 中有上百种权限,现在将所有的权限归为两类:一类是普通权限一类的危险权限普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统会自动帮我们进行授权不需要手动操作。危险权限则表示那些可能会触及到用户安全隐私或者对设备安全造成影响的权限,如获取手机联系人信息等权限,申请者部分权限必须有用户收到点击授权才可以,否则程序无法使用相应的功能。下...

2018-07-18 13:57:12 2117

转载 CSDN怎么转载别人的博客

在参考“如何快速转载CSDN中的博客”后,由于自己不懂html以及markdown相关知识,所以花了一些时间来弄明白怎么转载博客,以下为转载CSDN博客步骤和一些知识小笔记。 参考博客原址:http://b...

2018-07-11 13:19:46 111

转载 Android Studio 上传项目到Github并设置忽略文件

一、安装git客户端下载git客户端并安装 下载地址:https://git-scm.com/download二、配置 Android Studio 中的 git1.在 Android Studio 中配置 git 客户端2.在 Android Studio 中配置 Github 账号 三...

2018-07-11 13:11:19 690

原创 Rxjava2学习笔记之subscribeOn()和observeOn()的关系

1、只有第一subscribeOn() 起作用(所以多个 subscribeOn() 无意义)这个 subscribeOn() 控制从流程开始的第一个操作,直到遇到第一个 observeOn();2、observeOn() 可以使用多次,每个 observeOn() 将导致一次线程切换,这次切换开始于这次 observeOn() 的下一个操作;3、不论是 subscribeOn() 还是 obse...

2018-06-28 16:21:28 1051

原创 Android Studio常用快捷键总结

操作功能Ctrl + Alt + 空格代码提示logt生成taglogm、logd、loge 打印logCtrl + shift + Up/Down 代码向上/下移动Ctrl + D复制当前行到下一行Ctrl + X剪切Ctrl + Y删除当前行Alt + Up/Down在类中的方法间移动Ctrl + W选中代码,连续按会有其它效果Ctrl + N打开一个类Ctrl + Shift + N打开一个...

2018-06-28 13:57:26 244

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除