Android日常开发(偏业务方向)
android平时项目开发所遇到的问题,经验积累
像一只小蜗牛
不要辜负了所有爱你的人
展开
-
接口集线器,将多个模块功能进行合并,方便调用
接口集线器package com.company;import com.company.inter.HubA;import com.company.inter.HubB;public class Test { public static void main(String[] args) { Hub hub =new HubImple(new HubAImple(),new HubBImple()); hub.hub(); hub.hubA原创 2020-12-11 22:47:01 · 377 阅读 · 0 评论 -
Bean转换器工具类
Bean转换器工具类给两个Bean相互转换,一般喜欢写一个Util工具类,但是使用起来贼不方便,不如用这个转换器类,可以把转换工作放在一起,而且还好管理,便于别人查看和使用package com.company;public abstract class TransformBean<T,K> { public TransformBean() { } public abstract K transorm(T t,K k); public abstrac原创 2020-12-11 22:00:52 · 418 阅读 · 0 评论 -
Android日常开发(51)使用ViewFlipper轻松实现上下,左右滚动视图
前言实现上线翻滚的视图的办法有很多种,比如viewpager。今天我们要分享的是使用ViewFlipper实现这种效果。原理ViewFlipper的实现原理,是通过动画+广播代码讲解用到的类ViewFlipper,Animation <ViewFlipper android:id="@+id/viewFlipper" android:layout_width="match_parent" android:layout_height="wrap_content"原创 2020-09-25 16:57:18 · 756 阅读 · 0 评论 -
Android日常开发 (50)如何查找应用启动入口,通过隐式意图拉起三方应用
前言android隐式意图可以帮我们唤起系统内的其它应用,这个很好理解。系统桌面也是一个app,它能做到的事情我们一样可以做到。 Intent intent = new Intent(); ComponentName cmp= new ComponentName(pkg, cls); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_L原创 2020-09-02 16:39:03 · 746 阅读 · 0 评论 -
Android 日常开发 (49)使用融云的时候在子线程中执行初始化的坑
前言在遇到这个问题的时候,我只能看到的报错信息FATAL EXCEPTION: main Process: com.xxx.yyy, PID: 29472 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.crobot.fifdeg/com.xxx.yyy.base.WebViewActivity}: android.view.InflateException: Binary XML file l原创 2020-08-17 14:09:02 · 488 阅读 · 0 评论 -
Android 日常开发(48)android.os.FileUriExposedException最佳解决办法
前言我之前在weex的问题合集里面讲过一次这种异常的处理办法不过当时时通过关闭android严苛模式的视角处理的。今天我们来深入sdk,看看这个问题的最佳解决方式1.我们通过android developer官网搜索android.os.FileUriExposedException这个异常The exception that is thrown when an application exposes a file:// Urito another app.This exposure is di原创 2020-08-12 14:00:07 · 485 阅读 · 0 评论 -
Android 日常开发(47)okhttp 服务器端使用Gzip问题解决
前言上一篇文章我们讲到Gzip的问题,我们也找到了问题的原因。我没通过重定义response来获取contentLength。这一篇我们具体讲以下Gzip问题的由来和解决的思想。排查这个问题的时候很慌,之前没有遇到过,第一次遇到,所以就。。恢复当时debug的心请,一切准备就绪我把pdf上传到七牛云之后,试过。loading框跑的好好的。但是一换上公司的文档地址,就各种奇葩事故,大型翻车现场调试结果显示contentLength=-1。一脸懵逼的我,果断上网搜索。搜索引擎编程。收了白天也没有找原创 2020-08-06 15:14:47 · 967 阅读 · 0 评论 -
Android 日常开发(46)okhttp与WebView同步cookie(下)
前言上一篇文章我们讲了okhttp的cookiejar和webview的使用的android cookieManager。这个设计确实不好,为啥三方库就不能基于系统进行扩展呢?我的分析如下:首先okhttp并不只适用于android开发,java web开发在跨应用也有大量的使用常景。而内置与android.jar包下面的CookieManager跟android系统结合的特殊性,使得okhttp有自己的一套cookie运行,与cookie的本质和机制是差不多的。问题描述现实生活我们总能遇到奇奇原创 2020-08-03 17:29:36 · 612 阅读 · 0 评论 -
Android 日常开发(45)okhttp与WebView同步cookie(中)
前言:上一篇我们讲了关于同步cookie到webview中,这篇我们将会结合okhttp来搞一波,如何将webview的cookie和okhttp的cookie进行同步关于okhttp对cookie的支持上一篇我们用到了android.jar包中的CookieManager这个类,它是用来帮我们持久化cookie的。说白了就是帮我们把cookie信息保存到数据库中okhttp里面有个cookie的接口,如下:我们需要实现这个接口,对我们的cookie进行管理(数据同步)public class原创 2020-08-03 14:51:04 · 568 阅读 · 0 评论 -
Android 日常开发(44) okhttp与WebView同步cookie(上)
需求描述:将app登陆接口返回的TGC信息写入webview的cookie当中技术名词CAS、Cookie、TGC解决方案我们都知道okhttp的CookieJar接口为我们获取网络请求过程中cookie信息提供了方法。android里面的CookieManager是用来给WebView提供原生管理cookie的办法的。这里我们我们打通上述问题的关键就是使用CookieManager来实现原生方法中登陆返回的cookie写入CookieManager中来达到WebView可以直接使用写入的cook原创 2020-07-28 20:47:13 · 412 阅读 · 0 评论 -
Android日常开发(42)build打包,配置多环境最佳实践(debug release uat)
https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.htmlgradle DSL buildTypes { release { if (file(Key_StoreFile).isFile()) { signingConfig signingConfigs.release原创 2020-07-24 21:02:50 · 859 阅读 · 0 评论 -
Android日常开发(41)为控件设置id时出现 inner element must either be a resource reference or empty
AAPT打包出现问题需要做如下调整出现问题的代码 <item name="biz_tag_key_sense_id" type="id">100</item> <item name="biz_tag_key_cn_definition" type="id">101</item>修改后的代码 <item name="biz_tag_key_sense_id" type="id" /> <item name="biz_原创 2020-07-23 23:04:38 · 398 阅读 · 0 评论 -
Android日常开发系列文章列表
原创 Android日常开发(40)BottomNavigationView 实现底部导航原创 Android 日常开发 (39)javax.net.ssl.SSLHandshakeException:原创 Android日常开发(38)旧项目迁移AndroidX原创 Android日常开发(37)API27引入ExoPlayer2.11.4项目报错处理原创 Android日常开发(36) Project needs to be converted to androidx.* dependencie原创 2020-07-13 21:59:38 · 520 阅读 · 0 评论 -
Android日常开发(40)BottomNavigationView 实现底部导航
前言一般我们实现底部导航都是采用,自定义View的方式来实现的,今天我们使用Google为我们提供的BottomNavigationView来实现这个功能。首先引入依赖api 'com.android.support:design:28.0.0'在布局中写入我们的BottomNavigationView UI组件 <android.support.design.widget.BottomNavigationView android:id="@+id/bottomN原创 2020-07-08 11:04:38 · 555 阅读 · 0 评论 -
Android 日常开发 (39)javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException:
前言运维说服务器证书到期了,更新了证书,结果出现了上述问题。解决方案通过排查项目代码,发现之前没有做证书信赖验证。这里先提供一个能解决问题但是不是最佳做法的方案,方便大家快速处理问题项目使用了okhttp通过对okhttp的builder添加证书校验OkHttpClient.Builder builderSSLContext sslContext = SSLContextUtil.getDefaultSLLContext(); if (sslContext != null) {原创 2020-06-22 12:05:48 · 3067 阅读 · 2 评论 -
Android日常开发(38)旧项目迁移AndroidX
第一步:修改gradle.properties文件android.useAndroidX=trueandroid.enableJetifier=true第二步:将sdk目标版本最低指定到28 compileSdkVersion: 28, minSdkVersion : 21, targetSdkVersion : 28,第三步:点击工具栏的Refactor按钮Migrate to AndroidX注意:会提示保留备份,第四步:代码迁移完成之后会提示部分库引入错误,一起修改(原创 2020-05-11 20:03:32 · 428 阅读 · 0 评论 -
Android日常开发(37)API27引入ExoPlayer2.11.4项目报错处理
1.错误提示:error: resource android:attr/fontVariationSettings not found解决办法:把编译版本由27改成28就好了:compileSdkVersion 28defaultConfig {applicationId “com.xxx”minSdkVersion 19targetSdkVersion 28versionCode 1versionName “1.0”testInstrumentationRunner “android.原创 2020-05-10 22:57:03 · 1052 阅读 · 0 评论 -
Android日常开发(36) Project needs to be converted to androidx.* dependencies
前言最近在旧项目中创建module时候会遇到可能是因为升级了as的缘故方案一:升级项目到androidx方案二:修改配置让提示消失步骤一:gradle.properties(Global Properties)下添加:android.useAndroidX=trueandroid.enableJetifier=true步骤二:新建module_test,这时就没有Project needs to be converted to androidx.* dependencies步骤三:把新建原创 2020-05-10 16:30:25 · 337 阅读 · 0 评论 -
Android日常开发(35)Your anti-virus program might be impacting
9:28 Gradle build failed in 1 s 467 ms9:29 Your anti-virus program might be impacting your build performance. Android Studio checked the following directories:C:\Users\peng.luo\AppData\Local\Android...原创 2020-04-21 09:38:31 · 912 阅读 · 0 评论 -
Android 日常开发(34) mac下androidstudio关联SDK源码失败
前言不知道大家还是否记得我之前写过的一篇文章Android日常开发(14)Sources for ‘Android API * Platform’ not found关于jdk_tables.xml这篇文章给大家提供了一个通过修改jdk_tables.xml的方式关联sdk的源码。之前的办法虽然能解决问题。但是太过于繁琐和麻烦今天刚好凑巧在我的mac电脑上有遇到过一会,可能是由于是隐藏文件...原创 2020-01-11 10:22:01 · 384 阅读 · 0 评论 -
Android 日常开发(33) 重新命名工程的文件夹名字导致,项目运行错误
前言在平时的日常开发工作中,我们可能会遇到修改工程的根文件夹名字,做一些调整。相信你肯定会遇到这种问题,今天我就跟大家一起分享这个问题的解决办法。问题描述修改了工程的根文件夹名字之后,再次打开项目木,会发现运行项目app的地方打了个x,无法编译运行,而且代码中提示很多引用和命名空间都不正确。解决办法1.修改工程文件夹名字之后,2.将工程下面的.iml文件删除3.将工程从as的近期使...原创 2020-01-08 20:59:04 · 864 阅读 · 0 评论 -
Android 日常开发(32) WebView视频全屏播放
前言之前也做过了,很多遍全屏的控制,但是一直都没有写成笔记去总结。webview setting this.getSettings().setJavaScriptEnabled(true); this.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); this.getSett...原创 2020-01-06 16:56:28 · 229 阅读 · 0 评论 -
Android 日常开发(31) 如何使用Rxjava做集合遍历转换
前言我们知道jdk1.8增加了stream,可以对集合做变换操作。但是android上如果想使用这个特性的话,需要讲sdk最小版本设置到24也就是android7.0设备。这个看起来不是很合适,那么有什么好的替代办法吗?Rxjava可以帮助你解决这个困境代码jdk1.8的写法List<String> strings= checkTypeBeans.stream().map(C...原创 2020-01-03 14:18:55 · 839 阅读 · 0 评论 -
Android 日常开发(30) Failed to find GeneratedAppGlideModule
前言项目中使用了xdroid的框架,不得不说这个框架确实好用,我都用它开发了好几个项目了,但是项目中也有些许问题哦问题描述控制台输出错误信息如下:Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency解决办法创建一个GeneratedAppG...原创 2020-01-02 20:51:17 · 8723 阅读 · 6 评论 -
Android 日常开发(29) QMUIRoundButton动态设置背景色导致圆角失效
前言今天讲一讲QMUI里面的一些比较隐蔽的问题处理手段需求描述产品在一个列表里面通过产品的状态,修改按钮的值和颜色。这里为了减少drawable所以就使用了QMUI的RoundButtonUI组件,但是组里的小伙伴遇到了修改导致圆角效果失效的问题小伙伴按照常规的思路通过设置背景颜色的方式修改了xml里面的qmuiBackground。这里既然组件的作者已经把背景色用别的属性名称代替了,肯定...原创 2020-01-02 18:03:22 · 1995 阅读 · 1 评论 -
Android 日常开发(28) Webview缓存设置以及缓存清理办法
前言最近项目中用到这个东西,这里就顺便扯一扯一般配置 this.setInitialScale(1); this.getSettings().setJavaScriptEnabled(true); this.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); this.ge...原创 2019-12-24 18:40:10 · 759 阅读 · 0 评论 -
Android 日常开发(27) 启动页图片效果优化方案
前言之前写过一篇《启动页面广告页面尺寸适配及等待时长设置》今天这篇文章,是对之前的文章的修改。之前的解决方案有些许问题,今天我们针对这些问题进行调整喝优化问题-图片拉伸变形这里要使用到drawable的bitmap我们创建一个xml文件,内容如下:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:andr...原创 2019-12-24 18:26:12 · 289 阅读 · 0 评论 -
Android 日常开发(26) 在Mac pro上如何配置adb命令
前言在Mac pro上如何将Android SDK的adb命令添加到环境变量中,这里将进行说明!方法/步骤启动终端,可以在Spotlight中搜索“终端”进入当前用户的HOME目录,命令如下:cd $HOME更新.bash_profile文件(当该文件存在时),如果该文件不存在,可通过如下命令创建:touch .bash_profile打开.bash_prof...原创 2019-12-18 22:28:02 · 134 阅读 · 0 评论 -
Android日常开发(25)NoScrollViewPager+webview 开启hardwareAccelerated 网页绘制出现页面空白
前言这个问题之前在另一个项目当中,也出现过,当初的解决方法是恢复Viewpager的流畅滑动效果。因为主页面数量较少,滑动开启对展示效果影响不大分析问题查看viewpager源码如下:void setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity) { if (...原创 2019-12-18 15:20:58 · 348 阅读 · 0 评论 -
Android日常开发(24)[ERROR:ssl_client_socket_impl.cc(946)] handshake failed; returned -1, SSL error code
前言最近遇到一个棘手的问题,解决问题的方法有很多,但是最重要的是查明问题的原因。一开始我认为是webview的问题,因为这个问题在ios的手机上面没有出现,在android的手机上出现了。问题日志[INFO:CONSOLE(0)] “The connection used to load resources from https://login.xxxxx.com:8080 used TLS...原创 2019-12-17 11:51:15 · 26460 阅读 · 2 评论 -
Android日常开发(23)Android使用commons-codec 进行编码和解码操作java.lang.NoSuchMethodError: No static method
前言commons-codec是Apache开源组织提供的用于摘要运算、编码解码的包。常见的编码解码工具Base64、MD5、Hex、SHA1、DES等。异常信息java.lang.NoSuchMethodError: No static method encodeHexString([B)Ljava/lang/String; in class Lorg/apache/commons/co...原创 2019-12-16 15:40:43 · 1566 阅读 · 1 评论 -
Android日常开发(22)Android与H5交互,传参问题
前言我本来跟前端的小伙伴约定好了javascript和我原生方法互调,但是前端小伙伴觉得麻烦,便想尝试直接传对象的方式进行互调传参。结果。。。大型事故翻车现场。问题回顾我本来是这么约定的然而前端小伙伴并没有按我的套路出牌传入的不是字符串,而是一个对象类型!!!!刚开始我尝试使用比如JSONObject,Object,Map,String[]等类型结果还是获取不到javascript...原创 2019-12-13 18:10:08 · 513 阅读 · 1 评论 -
Android日常开发(21)androidstudio明明已经使用了jdk1.8,却无法使用泛型推断功能
前言在1.7版本的时候jdk就引入了泛型类型推断List<String> list=new ArrayList<>1.8版本发布后,增强了这个功能,升级为泛型目标类型自动推断于是我们可以这样写代码: List<String> list = new ArrayList<>(); list.add("A");// 由于addA...原创 2019-12-05 20:19:24 · 653 阅读 · 0 评论 -
Android日常开发(20)android vue单页面路由跳转无法触发 ,webview.canGoBack方法设置顶部关闭
前言在原生应用嵌入vue单页面应用的过程中,会遇到触发问题。问题描述例如:从首页跳入内部页面,windows.history 会记录相关页面跳转信息,但是由于是单页面应用,无法通过@Override public void onPageFinished(WebView view, String url) { super.onPageF...原创 2019-12-05 19:51:30 · 3503 阅读 · 0 评论 -
Android日常开发(19)android 调用vue 方法显示base64 位图片 遇到 Uncaught SyntaxError: Invalid or unexpected token
前言刚刚遇到了android 调用vue方法报空的情况,现在遇到了方法调用成功,但是方法体内部报错Uncaught SyntaxError: Invalid or unexpected token错误原因分析1.参数是否传递成功,将参数换成任意一个字符串,代替复杂的base64编码的字符串(ok)所以方法调用是通的2.判断base64编码图片是否有问题<!DOCTYPE htm...原创 2019-12-02 21:13:36 · 799 阅读 · 0 评论 -
Android日常开发(18)android 调用 vue methods 方法,提示"Uncaught ReferenceError: function is not defined"
前言今天开发webview 与 web联调相关工作遇到一个技术问题,原生方法调用js方法时,无法找到js所对应的方法内容<!DOCTYPE html><html><head> <meta charset="utf-8" /> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vu...原创 2019-12-02 20:41:08 · 1231 阅读 · 2 评论 -
Android日常开发(17)在使用JessYanCoding/AndroidAutoSize库时遇到的几个问题的解决办法,解决办法是在issue case中找到的
前言最近注意到android系统默认字体的修改会影响到,页面布局,更会影响到正在使用的AndroidAutoSize框架,不熟悉这个框加的同学可以自行了解https://github.com/JessYanCoding/AndroidAutoSize它是一个很好的屏幕适配方案。FAQ1.全局设置屏幕适配方法答:在BaseActivity中重写getResources@Overridep...原创 2019-11-20 14:28:59 · 2094 阅读 · 0 评论 -
Android日常开发(16)applicationIdSuffix用法
前言今天遇到一个打包的问题,二次开发,包名一致没有签名文件,两个同包名应用要在系统中共存解决方案buildTypes {debug {//signingConfig signingConfigs.debugdebuggable true}release {minifyEnabled falseapplicationIdSuffix ".release"signingConfi...原创 2019-11-13 20:13:28 · 2067 阅读 · 0 评论 -
Android日常开发(15)给icon着色 ImageView 的tint属性解析
前言有些时候,同一个icon图片在不同的页面可能出现多种不同的颜色展示效果,UI设计师也无法避免!因为颜色搭配确实很头疼解决方案ImageView 自带属性tint来拯救你<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"...原创 2019-11-01 16:19:22 · 821 阅读 · 0 评论 -
Android日常开发(14)Sources for 'Android API * Platform' not found关于jdk_tables.xml
前言遇到这个问题,说明你对android的源码产生了兴趣。想更多的了解android框架层的具体代码实现,碰到了not foud提示有兴趣的就可以戳一下!解决方案首先说明,很多人出现Sources for ‘Android API * Platform’ not found,可能是你真的没有下载对应的资源包。Step1》先检查本地是否已经有该文件夹,可以去Android Studio→Pr...原创 2019-10-25 14:57:03 · 410 阅读 · 0 评论