Android基础
jhonjson
我就是我,颜色不一样的烟火!改变不了别人,只能先改变自己!!!!
展开
-
androidstudio error=86, Bad CPU type in executable 以及 sourcetree git status failed with code -1
MacBook 升级到最新版本之后出现的问题Android Studio 出现了Bad CPU type in executableSourcetree 出现 git status failed with code -1出现的原因:M1运行x86的需要安装Rosetta2转译解决方法:在输入原创 2022-07-06 15:15:13 · 1154 阅读 · 0 评论 -
Android v1+v2 命令行签名
Android v1+v2 命令行签名原创 2022-07-01 18:56:37 · 640 阅读 · 0 评论 -
Couldn‘t find meta-data for provider with authority xxx.fileProvider
解决办法:Couldn‘t find meta-data for provider with authority xxx.fileProvider原创 2022-06-17 10:36:08 · 860 阅读 · 0 评论 -
网安过关斩将篇之-数据备份配置风险
风险描述:在APP的AndroidManifest.xml文件中配置 allowBackup 标志(默认为 true )来设置应用数据是否能够被备份或恢复。当这个标志被设置为true时应用程序数据可以在手机未获取 ROOT 的情况下通过adb调试工具来备份和恢复。在接触用户手机的情况下攻击者可以在启动手机USB调试功能来窃取那些能够受到AllowBackup漏洞影响的APP数据,造成用户敏感信息泄露甚至财产损失。解决方式:AndroidManifest.xml中 android:allowBackup=原创 2021-10-22 16:23:47 · 182 阅读 · 0 评论 -
网安过关斩将篇之-存储卡的操作行为
风险描述:被测系统将自身数据存储到存储卡,容易被第三方应用读取、利用,导致敏感数据泄露。出现这个问题的原因:项目中使用过时 getExternalStorageDirectory方法Android Q之后Environment.getExternalStorageDirectory()返回的路径可能无法直接访问。所以Environment.getExternalStorageDirectory()可以改成:Environment.DIRECTORY_MUSIC //music目录Environm原创 2021-10-22 14:20:40 · 87 阅读 · 0 评论 -
Apple M1 上使用Room数据库 构建失败
今天在Apple M1电脑上 添加Room数据库一直构建失败…Caused by: java.lang.ExceptionInInitializerError at androidx.room.processor.DatabaseProcessor.doProcess(DatabaseProcessor.kt:82) at androidx.room.processor.DatabaseProcessor.process(DatabaseProcessor.kt:57) at androidx.ro原创 2021-10-20 14:24:42 · 634 阅读 · 0 评论 -
Android 之WebSocket 通信
最近在做使用三方im做一些业务的时候,领导觉得三方的im通信并不能很好的适应我们的需求。所以决定抽时间,自己使用WebSocket实现一个长链接。做之前肯定要逛一逛github,学习一下优秀的经验,不经意间就找到了 Java-WebSocket,秉着这不重复制造轮的理论,直接上手使用起来。Gradle 使用mavenCentral()implementation 'org.java-websocket:Java-WebSocket:1.5.1'创建WebSocketChatClient继承W原创 2021-10-19 13:41:04 · 429 阅读 · 0 评论 -
Android如何动态设置Shape?
Android如何动态设置Shape?String color = userEntryHashMap.get(String.valueOf(msg.getLd_user().getUser_level())); if(!TextUtils.isEmpty(color)) { GradientDrawable drawable = new GradientDrawable(); drawable.setCornerRad原创 2021-06-03 18:49:10 · 459 阅读 · 0 评论 -
Android 多语言适配
最近在做多语言适配需要注意两个点:系统语言和用户选择的语言res文件下values命名这里只给出values命名:英语(美国):values-en-rUS英语(英国):values-en-rGB英语(澳大利亚):values-en-rAU英语(加拿大):values-en-rCA英语(爱尔兰):values-en-rIE英语(印度):values-en-rIN英语(新西兰):values-en-rNZ英语(新加坡):values-en-rSG英语(南非):values-en-rZ原创 2020-10-29 11:53:33 · 568 阅读 · 0 评论 -
ListView 滑动到底部(解决滑动到底部回弹效果)
ListView 滑动到底部listview.setSelection(listView.getCount()-1);listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);原创 2020-09-22 16:01:21 · 517 阅读 · 0 评论 -
android 如何优雅的集成 Razorpay
请在您的应用build.gradle文件中添加以下依赖项:repositories { mavenCentral() } dependencies { implementation 'com.razorpay:checkout:1.5.16' }Checkout并将付款详细信息和选项作为传递JSONObject。确保您添加了order_id在步骤1中生成的(一般是后台生成) public void startPayment() { /*.原创 2020-09-18 18:30:38 · 484 阅读 · 0 评论 -
华为手机Google Play 安装应用时提示:“您无法安装此应用,因为其他用户已在此设备上安装了不兼容的版本“
出现的原因:我安装了一个高版本的应用,之后删除,在安装线上应用(低版本)时,此时出现这个问题。排查:在应用列表中根本找不到的对应的应用在文件管理–Android --data–? 也找不到对应的包地址解决方案:adb shell pm uninstall 包名...原创 2020-07-22 17:18:03 · 8671 阅读 · 1 评论 -
Android 如何优雅的集成FaceBook
FaceBook官网地址FaceBook github地址申请账号之类的本篇就不在多说,不会的请自行百度。坑一:facebook 登录invalid key hash.the key hash does not macth any stoyed key has建议使用代码里边打印的密钥散列建议使用代码里边打印的密钥散列建议使用代码里边打印的密钥散列重要的事情说三遍,在终端里边输出的根本不能用,别问我为什么@Overridepublic void onCreate(Bundle saved原创 2020-07-07 10:42:34 · 1204 阅读 · 0 评论 -
集成Google pay 遇到的坑
集成Google pay 遇到的坑?坑 1:内购提示【您的交易无法完成】如何解决?只是你才需要检查你的信用卡是否绑定支付没有问题,建议电话Google客服。一般出现这种情况就是信用卡问题。坑2:google play显示“此商品无法在你所在国家地区不能购买/下载”怎么办?出现这种情况一般由两种原因原因1:Google商店的东西有的有区bai域限制,切换VPN原因2:签名或者版本号不一致引起的,你需要下载上传Google play里边apk的地方 派生apk ()坑3:此版本的应用未配置原创 2020-06-28 11:15:42 · 3448 阅读 · 0 评论 -
SharedPreference.Editor的apply和commit方法异同
apply和commit方法异同:commit返回boolean表明修改是否提交成功 ,而apply没有返回值apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会...原创 2020-05-07 09:18:42 · 107 阅读 · 1 评论 -
图片框架Glide与Picasso的区别:
Glide与Picasso的区别: 内存 Image质量的细节 磁盘缓存 Gif动图内存:加载同一张图片Picasso,Picasso的内存开销仍然远大于Glide。Image质量的细节:Glide默认的是Bitmap格式是RGB-565Picasso默认ARGB_8888格式Glide加载的图片没有Picasso那么平滑,但是很难察觉磁盘缓...原创 2020-05-06 17:51:58 · 575 阅读 · 0 评论 -
Android对的Apk安装过程经历了什么?
Apk安装的主要分为五大步骤:将apk文件复制到data/app目录使用PackageManager的installPackage接口之后调用installPackageAsUser。installPackageAsUser方法中主要完成两件事情。是权限检查是构建InstallParams,然后发送INIT_COPY的msg,这个mHandler运行在一个HandlerThre...原创 2020-05-06 17:29:42 · 376 阅读 · 0 评论 -
点击 Android Studio 的 build 按钮后发生了什么?
官网地址如图 1 所示,典型 Android 应用模块的构建流程通常按照以下步骤执行:编译器将您的源代码转换成 DEX 文件(Dalvik 可执行文件,其中包括在 Android 设备上运行的字节码),并将其他所有内容转换成编译后的资源。APK 打包器将 DEX 文件和编译后的资源合并到一个 APK 中。不过,在将应用安装并部署到 Android 设备之前,必须先为 APK 签名。...原创 2020-05-06 16:36:48 · 337 阅读 · 0 评论 -
The application could not be installed: INSTALL_FAILED_TEST_ONLY
The application could not be installed: INSTALL_FAILED_TEST_ONLY解决办法:gradle.properties文件 android.injected.testOnly=false原创 2020-03-20 16:25:12 · 13444 阅读 · 5 评论 -
android apk包上应用市场之空包写入签名
准备步骤打开终端,进入jdk路径bin目录下终端输入jarsigner 签名命令jarsigner -verbose -keystore (签名文件路径 例:/Users/../demo.jks) -signedjar (签名后APK保存地址路径 例:/Users/../baidu_signed.apk) (未签名APK地址路径 例:/Users/../baidu_unsigned....原创 2020-03-10 13:50:21 · 845 阅读 · 0 评论 -
java.lang.IllegalArgumentException View=DecorView@79e715c[] not attached to window manager
java.lang.IllegalArgumentException View=DecorView@79e715c[] not attached to window manager造成这类问题的原因:Dialog的生命周期比activity的生命周期长解决办法:@Override protected void onDestroy() { super.onDestroy...原创 2019-12-25 16:20:36 · 2058 阅读 · 0 评论 -
android 读取assets文件夹下的gif
android 读取assets文件夹下的gifString url = file:///android_asset/xxx.gifGlide.with(context) .asGif() .load(url) .error(R.mipmap.img_default)//异常时候显示的图片 .placeholder(R.mip...原创 2019-12-20 16:39:23 · 1976 阅读 · 2 评论 -
MMKV的简单实用一
MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Windows 平台,一并开源。MMKV官方链接MMKV 源起在微信客户端的日常运营中,时不时就会爆发特殊文字引起系统的 cras...原创 2019-12-05 11:19:04 · 4471 阅读 · 0 评论 -
安卓进程保活那些事之拉活策略
上一篇讲了安卓进程保活那些事,你知道多少?保活这一篇就讲一讲拉活,顾名思义保活就是保证它尽量活着,拉活就是死了再把他拉起来,让他继续活着。拉活JobScheduler拉活:定时任务拉起应用MyJobService.startJob(this);public class MyJobService extends JobService { private static fin...原创 2019-12-04 19:46:16 · 507 阅读 · 0 评论 -
安卓进程保活那些事,你知道多少?
产品需求 像QQ、 微信、 高德, 永远不被杀掉。那么他们是如何做到的呢?跟手机厂商商务沟通,app放进系统白名单。一像素保活法。双进程守护保活法。账号同步机制拉活。后台播放一个无声的音频。开启前台Service。他们这么做的原因是什么?IM(即时通信)保活 (重点 重点 重点)但这样的做法过于流氓,影响Android手机的性能。不建议使用!!!!但是有时候又没...原创 2019-12-04 17:02:50 · 456 阅读 · 0 评论 -
Android Room的学习之数据库升级
Room的数据库升级分为两种:清空数据库中的数据(不建议使用)private static AppDatabase create(final Context context) { return Room.databaseBuilder( context, AppDatabase.class, ...原创 2019-11-25 15:01:17 · 3200 阅读 · 1 评论 -
Android Room的学习之关联表
上一篇我们已经简单的学习Room的使用,这一篇我们就来学习一下Room多表关联,让我们对Room有更多的了解。在了解Room多表关联之前,我们需要学习一下Room里边的注解的意思实体类注解@Entity tableName 表示表的名称 @Entity(tableName = "keyvalue_table") @Entity 默认表的名称就是类的名称 public cla...原创 2019-11-22 16:54:22 · 5458 阅读 · 2 评论 -
Android Room的学习之基本使用
最近实际开发中有用到数据库,所以就抽时间研究下 Room官方地址简介Room是一个对象关系映射(ORM)库。Room抽象了SQLite的使用,可以在充分利用SQLite的同时访问流畅的数据库。Room的组成DatabaseEntityDAODatabase:app持久化状态,并作为与应用持久关联数据的底层连接的主要访问点。使用@Database注解的类需要满足以下条件:...原创 2019-11-22 15:13:29 · 1274 阅读 · 4 评论 -
Android悬浮通知横幅显示无效的问题
Android悬浮通知横幅显示无效的问题最近在做一个需求,就是手机压后台,来消息需要悬浮通知横幅显示我们都知道Android 8.0 之后,需要打开权限相关才能展示。如图:8.0需要打开点击新消息列表Android5.0之前需要 setTicker发送通知Notification.Builder builder = new Notification.Builder(context)...原创 2019-11-18 10:35:02 · 2272 阅读 · 0 评论 -
Android将后台应用唤起到前台的方法
在我们开发的过程中,经常遇到app进入后台,或者切换到前台的情况。比如:从后台切换到前台显示全屏广告实践来电显示从后台切换到前台如图显示:实现主要分为两个步骤:第一步通过ActivityLifecycleCallbacks判断是否在前后台显示private void registerActivityLifecycleCallbacks() { registerActiv...原创 2019-11-13 09:48:49 · 9946 阅读 · 8 评论 -
Edittext不自动获取焦点的方法
在EditText的父布局设置这两个属性android:focusable="true"android:focusableInTouchMode="true"原创 2019-11-12 16:23:23 · 76 阅读 · 0 评论 -
io.agora.rtc.internal.AudioRoutingController$HeadsetBroadcastReceiver
集成声网,出现泄漏问题com.shqy.one.activity.ChatActivity has leaked IntentReceiver io.agora.rtc.internal.AudioRoutingController$HeadsetBroadcastReceiver@32f559 that was originally registered here. Are you missi...原创 2019-10-28 13:58:13 · 732 阅读 · 0 评论 -
OpenGL基础之绘制
OpenGL绘制函数! 绘制方式 说明 GL_POINTS点) 绘制点 GL_LINES(线段) 连个点一组进行点的绘制,如果只有一个点就会舍弃这个点 GL_LINES_STRIP(条带线) 按照顶点顺序连接顶点 GL_LINES_LOOP(循环线) 按照顶点顺序连接顶点,最后一个点连接第一点 GL_TRIANGLES(三角...原创 2018-03-16 12:55:02 · 243 阅读 · 0 评论 -
OpenGL和OpenGl ES简介
OpenGL的基本认识:OpenGL是什么?(开发的图形库)OpenGL可以来干什么?(应用领域:视频 图形 图片处理,2D/3d游戏引擎开发,科学可视化,医学软件的开发,CAD(计算机辅助技术),虚拟实境(AR VR),AI人工智能)等等。一个用来渲染图像的OpenGL程序需要执行的主要操作。OpenGL和OpenGL ES有什么关系? ...原创 2018-03-04 22:56:43 · 9186 阅读 · 0 评论 -
Android 模块化 组件化 插件化的关系
模块化:一个程序按照其功能做拆分,分成相互独立的模块(例如:登陆,注册)。模块化的具体实施方法分为插件化和组件化。组件化:开发模式下面module本来就是一个独立app,只是发布模式下变成library。插件化:就是不存在发布模式开发模式,每个组件业务就是一个独立apk开发,然后通过主工程app动态加载部署业务组件apk。插件化和组件化的异同:相同点:都必须能够实现单独调试、集成编...原创 2018-03-05 14:55:50 · 1003 阅读 · 0 评论 -
OpenGl基础绘制二
渲染图形的基本流程 1.创建GLSurfaceView 2.初始化渲染器 3.onSurfaceCreated(),onSurfaceChanged(),onDrawFrame()三个方法 4.着色器(顶点着色器,片元着色器) 5.顶点 颜色 纹理 6.绘制投影OpenGL中只提供了两种投影方式:一种是正射投影,另一种是透视投影正射投影(Orthographic P...原创 2018-03-18 20:24:45 · 207 阅读 · 0 评论 -
OpenGL 着色器语言基础
数据类型概述:标量 :也被称为“无向量”其值只有大小,并不具有方向。向量:有方向的量叫做向量。OpenGLES着色语言中,向量可以看做是用同样类型的标量组成,其基本类型也分为bool、int和float三种。 每个 向量可以由2个、3个、4个相同的标量组成。1.其基本类型也分为bool、int和float三种。 每个向量可以由2个、3个、4个相同的标量组成 2.向量在着色器中的作用可...原创 2018-03-05 22:25:29 · 379 阅读 · 0 评论 -
CommonListDiaLogs 统一dialog 弹出框
统一通用底部弹出框由于每次写dialog都要写很多重复代码,因此简单的封装了一个BottomListDiaLogs,封装了一些常用方法,使用Builder模式实现:展示效果:使用方式:Add the dependency to your build.gradle.dependencies { implementation 'com.github.John...原创 2018-05-18 15:36:15 · 735 阅读 · 0 评论 -
Android 水波纹特效
先看一下动画效果(希望你会喜欢): https://v.qq.com/x/page/x0766wepadr.html width=300 height=480 type=audio/mpeg loop=”false” autostart=”true”>原创 2018-08-25 12:15:53 · 1615 阅读 · 0 评论 -
react-native-code-push的集成
react-native-code-push 是微软提供的一套可用于React Native的热更新服务打开终端:1.安装 CodePush Clinpm install -g code-push-cli2.注册CodePush 账号code-push register授权完成后,CodePush会显示你的Access Key,复制输入到终端即可完成注册并登陆...原创 2018-10-25 18:53:39 · 592 阅读 · 0 评论