- 博客(57)
- 资源 (3)
- 收藏
- 关注
原创 Android不可擦除分区写文件恢复出厂设置,无法读写问题
原因:恢复出厂设置之后,组权限变化,导致之前有权限的应用,读不到分组的权限。现象:概率性读不到写过之后的文件。
2024-12-21 19:14:25
313
原创 常用ADB指令
adb shell am start-foreground-service -n com.android.daemon/.DaemonService //应用服务。adb shell am startservice -n com.android.sdk/.DaemonService //系统服务。
2023-09-09 15:13:17
669
2
原创 实用网址记录
辅助工具条形码 https://barcode.tec-it.com/en/Code128二维码 https://cli.im/PPT神器思维导图 https://www.processon.com/
2023-08-02 18:04:46
156
原创 Android 前台服务崩溃RemoteServiceException
android.app.RemoteServiceExceptionContext.startForegroundService() did not then call Service.startForeground()该异常表示从Package发布通知时存在异常,主要出现在通知栏更新。[解决方案]:出现这个异常的原因有很多,使用通知需要注意以下几点:1.每次更新时都需要实例化Notification;2.设置Notification的ContentView之后记得设置ContentIntent
2022-09-13 11:25:04
2126
原创 kotlin基础之let、also、with、run、apply
1、let的用法1.1、let函数适用的场景场景一: 最常用的场景就是使用let函数处理需要针对一个可null的对象统一做判空处理。场景二: 然后就是需要去明确一个变量所处特定的作用域范围内可以使用// 使用Javaif( mVar != null ){ mVar.function1(); mVar.function2(); mVar.function3();}//使用kotlinmVar?.let{ it.function1(); it.function2()
2021-07-23 17:05:49
510
2
原创 学习记录--《深入理解ES6》之迭代器与生成器
循环的问题var colors = ["red","green","blue"];for(var i= 0, len = colors.length; i < len; i++){ console.log(colors[i]);}虽然这个循环非常直观,然而当它被嵌套使用并要追踪多个变量时,情况会变得非常复杂。额外的复杂度会引发错误,而for 循环样板性也增加了自身出错的可能性,因为相似的代码会被卸载多个地方。迭代器正是用来解决此问题的。何为迭代器在ES5中提供了 createIter
2020-12-30 17:42:29
179
原创 学习记录--《深入理解ES6》之Map
ES6的MapES6的Map类型是键值对的有序列表,而键和值都可以是任意类型。键的比较使用的是object.is(),因此你能将5与*“5”*同时作为键,因为它们类型不同。这与使用对象属性作为键的方式截然不同,因为对象的属性会被强制转换为字符串。你可以调用set()方法并给它传递一个键与一个关联的值,来给Map添加项;此后使用键名来调用get()方法便能提取对应的值。let map = new Map();map.set("title","Understanding ES6");map.set("
2020-12-29 14:41:14
149
原创 学习记录--《深入理解ES6》之符号与符号属性
创建符号值符号没有字面量形式,这在JS的基本类型中独一无二的,有别于布尔类型的true 或数值类型的42 等等。你可以使用全局Symbol 函数来创建一个符号值。let firstName = Symbol();let person = { };person[firstName] = "John";console.log(person[firstName]); //"John"此代码创建了一个符号类型的firstName变量,并将它作为person 对象的一个属性,而每次访问该属性都要使用
2020-12-29 13:55:36
196
原创 学习记录--《深入理解ES6》之Set
ES5中的 Set在ES5中,开发者使用对象属性来模拟Set与Map,就像这样:let set = Object.create(null);set.foo = true;//检查属性的存在性if (set.foo){ //一些操作}本例中的set 变量是一个原型为null的对象,确保在此对象上没有继承属性。使用对象的属性作为需要检查的唯一值在ES5中是很常用的方法。当一个属性被添加到set对象时,它的值也被设为true,因此条件判断语句(例如本例中的if 语句)就可以简单判断出该值是否存在
2020-12-28 19:53:39
141
原创 学习记录--《深入理解ES6》之解构
对象解构对象解构语法在赋值语句的左侧使用了对象字面量。let node = { type : "Identifier", name : "foo"};let { type, name } = node;console.log(type); //"Identifier"console.log(name); //"foo"如果想在变量声明之后改变它们的值let node = { type : "Identifier", name : "foo"}, type = "Li
2020-12-18 11:16:01
206
原创 学习记录--《深入理解ES6》之扩展的对象功能
对象字面量语法的扩展属性初始化器的速记法在ES5及更早版本中,对象字面量是“键/值对”的简单集合。这意味着在属性值被初始化时可能会有些重复。functiong createPerson(name,age){ return { name : name, age : age };}在ES6中,你可以使用属性初始化器的速记法来消除对象名称与本地变量重复情况。当对象的一个属性名称与本地变量名相同时,可以简单书写名称而省略冒号与值。function createPerson(name
2020-12-17 16:06:55
172
原创 学习记录--《深入理解ES6》之函数(下)
箭头函数ES6 最有意思的一个新部分就是箭头函数(arrow function)。箭头函数正如名称所示那样,使用一个“箭头”(=>)来定义,但它的行为在很多重要方面与传统的JS函数不同:没有this、super、arguments,也没有new.target 绑定:this、super、arguments以及函数内部的new.target的值由所在的,最靠近的非箭头函数来决定。不能被使用new调用:箭头函数没有**[[Construct]]** 方法,因此不能被用为构造函数,使用new调用箭头
2020-12-16 17:58:29
141
原创 学习记录--《深入理解ES6》之函数(上)
带参数默认值的函数ES6中的参数默认值ES6能更容易地为参数提供默认值,它使用了初始化形式,以便在参数未被正式传递进来时使用。function makeRequest(url, timeout =2000, callback = funtcion(){}){ // 函数的剩余部分}此函数只要求第一个参数始终要被传递。其余两个参数则都有默认值,这使得函数体更为小巧,因为不需要再添加更多代码来检查缺失的参数值。如果使用全部三个参数来调用makeRequest(), 那么默认值将不会被使用//
2020-12-16 13:56:02
168
原创 学习记录--《深入理解ES6》之字符串与正则表达式
正则表达式y标志在 Firefox 实现了对正则表达式 y 标志的专有扩展之后,ES6 将该实现标准化。 y 标志影响正则表达式搜索时的粘连( sticky )属性,它表示从正则表达式的 lastIndex 属性值的位置开始检索字符串中的匹配字符。如果在该位置没有匹配成功,那么正则表达式将停止检索。为了明白它是如何工作的,考虑如下的代码:var text = "hello1 hello2 hello3", pattern = /hello\d\s?/, result = patte
2020-12-15 16:02:43
182
原创 学习记录--《深入理解ES6》之块级绑定
块级绑定传统的var声明与其他语言的变量声明生命开始不一致,常常会令人困惑。var声明与变量提升使用var 关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶部(如果声明不在任意函数内,则视为在全局作用域的顶部)。这就是所谓的变量提升(hoisting)。function getValue(condition){ if(condition){ var value = "blue"; return value; } else { // value 在此处可访问,值
2020-12-14 19:25:58
128
原创 学习记录--TypeScript
TS知识ts基础基础类型数据类型关键字描述任意类型any声明为any的变量可以赋予任意类型的值数字类型number双精度64位浮点值。它可以用来表示整数和分数字符串类型string一个字符系列,使用单引号(‘)或双引号("")来表示字符串类型,反引号(`)来定义多行文本和内嵌表达式布尔类型boolean表示逻辑值:true和false let flag : boolean = true数组类型无声明变量为数组 // 在元素类型后面加
2020-11-19 20:37:50
1093
1
原创 APP整改
极光推送SDK功能:用于实现消息推送(或其他推送)功能收集个人信息的类型:设备信息、地理位置、网络信息极光隐私政策链接:https://www.jiguang.cn/license/privac设备信息:设备标识符(IMEI、IDFA、Android ID、MAC、OAID等相关信息)、应用信息(应用崩溃信息、通知开关状态、软件列表等相关信息)、设备参数及系统信息(设备类型、设备型号、操作系统及硬件相关信息) 网络信息:IP地址,WiFi信息,基站信息等相关信息
2020-10-30 12:26:59
6419
6
原创 Android 对外SDK提供 记录
需求场景:1、需要提供SDK:需要资料1)、aar包、需要混淆2)、测试demo,引入aar,调用接口3)、SDK说明文档.pdf4)、helpdoc 接口说明5)、readme 文档说明2、资料准备1)、开发aar①、打包的module需要设置成library apply plugin: 'com.android.library'②、因为SDK对外,所以代码需要加混淆,以防止代码核心泄露例,在progruard-rules.pro文件中条件混淆规则-keep cl
2020-05-27 17:34:43
523
原创 模块左上角标签
效果<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <rotate android:fromDegrees="45"...
2019-09-20 18:00:29
245
原创 线上TargetVersion改为26后需要适配的东西
1、动态权限####### 之前打包发布的时候是22,然后上传小米应用市场的时候需要28才可以上传。①、需要动态获取的权限有:手机设备信息、通讯录、摄像头、存储读取等比较常见的涉及用户隐私的权限2.文件存储适配(FileProvider)1.在AndroidMainfest.xml文件中声明FileProvider<provider android:name="an...
2019-08-13 18:17:56
414
原创 读取共享文件失败:Failed to find configured root that contains
问题:在android8.1以上进行程序间文件共享使用FileProvider时出现的SD卡异常错误FATAL EXCEPTION: main Process: com.zenmme.zenmmeleveling, PID: 18726java.lang.IllegalArgumentException: Failed to find configured root that contain...
2019-02-27 14:11:04
2170
1
转载 AppBarLayout快速滑动导致回弹的解决方案CollapsingToolbarLayout
转自:https://blog.youkuaiyun.com/vite_s/article/details/78901767在26版本的sdk上,谷歌解决了之前存在已久的一个问题:AppBarLayout、CollapsingToolbarLayout和RecyclerView共存时,无法通过fling快速展开AppBarLayout但是随之而来的是一个新问题,当快速上下滚动,最后回到顶部时,App...
2018-06-25 09:33:46
2197
1
原创 as3.0.1 打包出错问题
使用的Android Studio 3.0.1版本,buildToolsVersion “26.0.2” Debug模式运行App没有任何问题,但是打包的时候就不行了,报以下错误:Error:Execution failed for task ':app:transformClassesWithDexForRelease'.com.android.build.api.transform...
2018-04-08 18:50:29
296
原创 android 命名规范(阿里开发手册)
1、【推荐】layout文件的命名方式:Activity的layout以 module_activity开头 Fragment的layout以module_fragment开头 Dialog的layout以module_dialog开头 include的layout以module_include开头 ListView的行layout以module_list_item开头 Recycl...
2018-03-10 15:05:05
2172
转载 Gradle系列《一》: 基础概念
转自:http://blog.youkuaiyun.com/cai_iac/article/details/51860419 从build.gradle(Project)说起//buildscript中的声明是gradle脚本自身需要使用的资源//可以声明的资源包括依赖项、第三方插件、maven...
2018-02-28 17:35:48
255
转载 Gradle系列《二》: 在Android中的应用
转自:http://blog.youkuaiyun.com/cai_iac/article/details/51909307 接Gradle系类《一》Gradle的更多用法这里主要介绍app/build.gradle这个文件,因为这里面的配置是与我们应用开发最为息息相关的。首先,先看看我们都可以在这个文件中配置哪些内容(功能)。另外,这里略去了部...
2018-02-28 08:43:23
173
转载 Gradle系列《一》: 基础概念
转自:http://blog.youkuaiyun.com/cai_iac/article/details/51860419 什么是Gradle Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目...
2018-02-28 08:43:07
186
原创 java开发规范(笔记)
摘抄自阿里巴巴开发手册,记录了一些比较经典的点。 一、编程规约 (一)命名规约 1.【强制】 代码中的命名均不能以下划线或者美元符号开始,也不能以下划线或美元符号结束 反例 : _name/__name/Object/name/name" role="presentation">Object/name/nameObject/name/nameObject/na
2018-01-26 20:54:48
274
转载 svn在android studio的使用
原文链接:http://www.cnblogs.com/songmeng/p/4389446.html在AndroidStudio中开发版本控制,除了Git就是SVN,和Eclipse不同Android Studio没有提供单独的插件,只能和SVN客户端关联使用,和Eclipse安装有很大区别,下面介绍个在AndroidStudio中SVN的安装和配置方法。一、SVN的安装
2018-01-16 20:45:13
194
原创 git 基础
一、Git跟踪并管理的是修改,而非文件。二、Git鼓励大量使用分支:查看分支:git branch创建分支:git branch name>切换分支:git checkout name>创建+切换分支:git checkout -b name>合并某分支到当前分支:git merge name>删除分支:git branch -d name>把文件修改添加到暂存区:
2018-01-15 21:50:11
158
原创 JAVA 实现crc8(多项式X8+x5+x4+1),byte的各种问题
遇到的坑一、符号右移及C#java的区别1、定协议的时候,后台的是用C#写的,在协议中给了一个crc封装的函数public static byte CRC8(byte[] buffer) { byte crc = 0; for (int j = 0; j < buffer.Length; j++)
2018-01-10 20:51:01
9814
1
原创 git使用过程遇到的问题
1.今天试git的时候最后一步 git本地仓库push远程仓库的时候,出了这个错:fatal the current branch master has no upstream branch解决方案 : 用如下命令提交git push -u origin master2.想创建远程分支testT,直接在master下执行以下命令,报错如下$ git push -u ori
2018-01-09 21:21:24
1294
原创 TimerTask 出现IllegalStateException:Task already scheduled or cancelled.
timerTask 抛异常
2017-06-06 17:01:11
16059
3
转载 ButterKnife使用详解
写在前面:该文档使用7.0版本,8.0版本方法名有所改动,建议看官方文档,整体业务逻辑和原理没什么变动,官网在Android编程过程中,我们会写大量的布局和点击事件,像初始view、设置view监听这样简单而重复的操作让人觉得麻烦类,所以可以采用注解的方式去实现,而ButterKnife则是注解中相对简单易懂的很不错的开源框架,而网上的文档和例子都过时了,7.0之后的版本改动很大,之前的注解...
2017-03-27 16:40:58
346
原创 android studio 问题(持续更新)
1.导入.so文件运行时出现 java.lang.UnsatisfiedLinkError 3.1java.lang.UnsatisfiedLinkError: Couldn't load entryex from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.huawei.appmarket.
2017-03-01 09:53:08
474
基于rxtx的java串口通信
2017-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人