安卓开发遇到问题总结
这里记录自己在开发过程中遇到的一些问题和经验总结记录。好好整理,因为自己进步特别慢,听从大神的建议,好好写博客有利于自己成长和进步。
hpp_1225
淫慢则不能励精,险躁则不能冶性;年与时驰,意与日去,悲守穷庐,将复何及!
展开
-
记录一个webview加载h5高度为0的问题
因为NestedScrollView嵌套加载webview加载h5,加载出来高度为0的问题原创 2022-11-10 20:51:30 · 610 阅读 · 1 评论 -
BottomSheetDialogFragment 展示不全优化
bottomsheetdialogfragment弹框首次打开就完全展示原创 2022-07-20 17:40:35 · 1354 阅读 · 0 评论 -
BottomSheetDialogFragment 在小屏幕手机需要上拉才能展示全的问题
BottomSheetDialogFragment 在18:9以上的手机显示没问题 解决 16:9以下的手机显示不全(上拉后可以显示全)/** * BottomSheetDialogFragment 在18:9以上的手机显示没问题 * 解决 16:9以下的手机显示不全(上拉后可以显示全) */ fun showAllDialog() { view?.let { val parent: View = it.parent as原创 2021-11-17 10:34:25 · 498 阅读 · 0 评论 -
自定义组合控件ConstraintSet修改约束失效
安装 Google官方文档设置对应view的约束: val constraintLayoutRoot = viewBinding.layoutStepAward val constraintSet = ConstraintSet() constraintSet.clone(constraintLayoutRoot) constraintSet.connect(viewBinding.bubble.id, ConstraintSe.原创 2021-11-02 11:09:31 · 812 阅读 · 0 评论 -
keystore.properties 配置
秘钥丢失或泄漏: 1.无法发布已有应用的更新,签名文件不同导致无法覆盖安装 2,被人重新打包,添加私活,偷偷获取用户数据等从编译文件中移除签名信息android 保障密钥的安全 keystore.properties - Welcome My Blog! - OSCHINA - 中文开源技术交流社区关于签名文件的知识总结 - zhangmiao14 - 博客园在您创建签名配置时,Android Studio 会以纯文本形式将您的签名信息添加到模块的build.gradl...原创 2021-10-21 15:36:29 · 3834 阅读 · 0 评论 -
sublime 通过package manager搜不到pretty JSON 插件了,自己手动安装
如题,突然就搜不到这个插件了。去package control 中文镜像网搜到这个插件,自己手动安装一下。Sublime Text 4cd <Packages directory>(MacOS:~/Library/Application\ Support/Sublime\ Text/Packages) git clone https://github.com/dzhibas/SublimePrettyJson.git "Pretty JSON"Sublime Text 3...原创 2021-08-31 16:20:21 · 2014 阅读 · 0 评论 -
Build was configured to prefer settings repositories over project repositories but repository ...
首先上链接:stackoverflow的正解下载了最新版的狐狸图标的AS,4.1.2版本,在项目的build.gradle中添加项目编译需要的依赖,allprojects { repositories { google() jcenter() }}然后,报错,编译不过。problem occurred evaluating root project 'My Application'.> Build was configure原创 2021-08-24 14:24:43 · 57813 阅读 · 22 评论 -
zsh: command not found: adb
mac 命令行adb遇到的问题,搜了一下,要配置bash_profile文件,结果,执行open .bash_profile,提示The file /Users/hongpanpan/.bash_profile does not exist.就到前往-个人里面,自己创建.bash_profile文件吧,结果又“您不能使用以点“.”开头的名称然后,搜到:https://www.jianshu.com/p/ccc2ec84f4b6,执行:defaults write com.apple.f.原创 2021-08-19 13:59:38 · 401 阅读 · 0 评论 -
Android WebView 调起H5支付,提示商家参数格式有误
记录一个APP里面h5支付吊起微信失败的问题:微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4一个解决的方案分析:https://juejin.im/post/6844904051449020423原创 2020-10-22 14:05:13 · 467 阅读 · 0 评论 -
安卓 webview 输入框无法弹出软键盘问题
自定义webview 使用了3个参数的,最后一个参数传了0,导致软键盘无法弹出。改成两个参数的就好了。原创 2020-08-28 09:32:35 · 509 阅读 · 0 评论 -
Android 9.0及以上,http链接网页无法打开
因为从 Android 9(API 级别 28)开始,系统默认情况下已停用明文支持。因此http的url均无法在webview中加载。解决办法:<network-security-config> <base-config cleartextTrafficPermitted="true"></base-config></network-security-config>网络安全配置...原创 2020-06-09 09:47:34 · 2628 阅读 · 1 评论 -
ClassNotFoundException
ClassNotFoundException: Didn't find class "org.apache.http.conn.scheme.SchemeRegistrySchemeRegistry在Android P上不可用了,还想用的话,1、在build.gradle的Android块里加:useLibrary 'org.apache.http.legacy'2、在application里加: <uses-library android:name..原创 2020-05-22 15:51:21 · 381 阅读 · 0 评论 -
couldn't find "libflutter.so"
今天遇到这个报错,检查一下,就在methodResult调用success后又加了一句打印了log,然后安装apk就闪退,报错couldn't find "libflutter.so",flutter工程的run下面停在:Waiting for observatory port to be available...然后把log注掉或者移动到methodResult调用上面就好了~这样看来,...原创 2020-04-16 13:49:57 · 368 阅读 · 0 评论 -
Program type already present: com.alibaba.android.arouter.routes.ARouter$$Group$$login
运行一直报这个错误,搜了下可能原因,和我这里遇到的不一样,增加一种原因:同一个路径被多次引用导致的!@Route(path = CommonRoute.ServiceRoute.SERVICE_ROUTE_LOGIN)其他常见原因:包名重复;arouter源码已经使用了路径;...原创 2020-04-07 14:47:20 · 952 阅读 · 0 评论 -
时间格式化处理工具类
/** * 时间格式化 * 参数: * time:时间 * type: * 0 -> 今天10:20 昨天10:20 2019.01.21 10:29 * 1 -> 10:20 昨天10:20 2019.01.21 10:29 * 2 -> 2019.01.21 10:29 * 3...原创 2020-03-02 19:08:47 · 212 阅读 · 0 评论 -
APP处于主界面是arouter跳转失效
项目是多模块的,现在需要收到一个极光推送的通知,点击通知,从一个模块跳转到另一个模块的activity,但是尝试发现,通过arouter跳转,1、当APP在前台的时候,点击可以正常跳转2、APP在后台,其他APP在前台,可以跳转3、APP在后台,停在主页面,点击却报,no postcard; 找不到要跳转的路径了。没得办法,使用隐式跳转实现的。 <activity...原创 2020-01-09 17:23:49 · 1249 阅读 · 0 评论 -
反射公共类
object ReflectUtils { /** * 反射获取target里的fieldName对象 * * @param fieldName 对象名称 * @param target 反射类实例对象 * @return 返回fieldName实例对象 */ fun getFieldValue(fieldName...原创 2020-01-07 14:56:05 · 156 阅读 · 0 评论 -
上传包到maven是自动以release方式打包的
如下图,通过gradle的 uploadArchives上传包到公司的maven仓库,项目里面有用到一个判断,是通过BuildConfig.Debug,判断在debug状态下才开启某些功能,但是通过此命令上传代码的时候,自动以release方式上传的导致控制代码这里面的内容都没用了。记录一下。...原创 2019-12-19 10:45:29 · 1416 阅读 · 0 评论 -
刘海屏获取屏幕的分辨率
fun getScreenDensity(activity: Activity): IntArray? { val windowManager = activity.windowManager val outMetrics = DisplayMetrics() // getRealMetrics刘海屏才能获取到实...原创 2019-11-29 17:45:22 · 1153 阅读 · 0 评论 -
Java 对象实现深度复制
因为项目里面自定义的类里面嵌套太多复杂自定义对象,挨个实现clone接口太麻烦,还涉及到hasMap的深拷贝,刚开始使用gson或者fastjson的序列化,反序列化的方式进行深拷贝,但是一直报错,Gson报错:java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: ...TextVi...原创 2019-11-06 19:18:58 · 570 阅读 · 0 评论 -
实现深拷贝
方法1:修改构造函数方法2:复写clone()方法方法3:借助三方库:Apache Commons Lang、使用Gson的JSON序列化、使用Jackson的JSON系列化总结:Gson最方法当我们需要深度复制对象时,该选择哪一种实现方式呢?依赖于我们需要复制的类,并且是否我们在对象图中拥有这些类来源:Java对象的深拷贝实现...原创 2019-11-01 16:25:03 · 130 阅读 · 0 评论 -
一个截图工具类
包括:截图不包括当前页面的dialog,截图包括dialog,获取屏幕像素,保存图片到系统相册,将bitmap转为base64字符串class ScreenUtils private constructor() { companion object { /** * 当前页面截屏 不包括dialog * * @pa...原创 2019-10-29 15:32:01 · 208 阅读 · 0 评论 -
WindowManager.LayoutParams.type属性
type 的取值: 应用程序窗口。 public static final int FIRST_APPLICATION_WINDOW = 1; 所有程序窗口的“基地”窗口,其他应用程序窗口都显示在它上面。 public static final int TYPE_BASE_APPLICATION =1; ...转载 2019-10-29 14:29:41 · 2381 阅读 · 0 评论 -
判断一个view是否符合上报埋点事件条件
/** * 判断当前view是否符合上报要求 * view可点击,可见,设置了点击监听 * * @param view * @return */ private fun viewCanReport(view: View): Boolean { if...原创 2019-10-29 11:12:48 · 253 阅读 · 0 评论 -
通过反射获取view再layout里面设置的onclick属性值
/** * 通过反射,获取View的在res/Layout布局中声明的onClick属性名称 * 但是通过databinding方式设置的值获取不到 * */ fun getViewClickListenerName(view: View?): String? { var cl...原创 2019-10-29 10:22:17 · 256 阅读 · 0 评论 -
View测量值的获取时机
因为视图的测量过程和activity的生命周期不同步,所以无法在生命周期的方法中获取测量值。测量值只能在异步的测量过程完成后才能获取。有两种方法。一、在onResume()中调用view的post方法视图的测量是在消息队列中完成的,优先完成系统消息,系统消息执行完毕后才会执行用户消息。这样View调用post条件的消息会在视图测量完成后执行,就能获取测量的宽度和高度。int wi...原创 2019-03-28 17:16:03 · 181 阅读 · 0 评论 -
ViewPager+Fragment预加载问题处理
ViewPager+Fragment结合使用的时候,当前显示的fragment的左右两边的fragment也会被创建,在viewPager里面有个方法setOffscreenPageLimit是设置预加载的fragment数目:/**Set the number of pages that should be retained to either side of the cur...原创 2019-03-26 12:40:35 · 370 阅读 · 0 评论 -
从一个应用的activity跳转到另一个应用的activity
只要包名设置对了,直接调用intent就可以跳转 要跳转的activity的exported属性设置为true //类名类名都要用完整路径,第一个参数是包名,第二个参数是类名Intent intent = new Intent(); ComponentName cn = new ComponentName("com.corp.timetest","com.c...原创 2019-01-22 17:27:03 · 1145 阅读 · 0 评论 -
android:exported属性的默认值
android:exported这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。它的默认值依赖与该服务所包含的过滤器。没有过滤器则意味着该服务只能通过指定明确的类名来调用,这样就是说该服务只能在应用程序的内部使用(因为其他外部使用者不...转载 2019-01-22 16:04:09 · 3019 阅读 · 0 评论 -
taskAffinity属性简介
注意点:1、必须和FLAG_ACTIVITY_NEW_TASK结合使用,否则不起作用2、属性值是一个字符串,只要满足包名的命名就可以,eg:“abcdfs.”, "dfsfe.fasdf.dfsf",但是直接用一个字符串不带“.”这个符号,则无法安装,会报错Installation failed with message INSTALL_FAILED_USER_RESTRICTE...原创 2019-01-22 15:17:00 · 866 阅读 · 0 评论 -
RecyclerView快速滑动到顶部
记录一下工具类参考:https://www.jianshu.com/p/9be8a3da5ced/** * 修改 SmoothScrollToPosition(int position) 按一定速度滚动到指定的位置 的滑动速度 * 如果要修改滑动速度,那么新建一个LayoutManager,然后重写SmoothScrollToPosition, * 然后新建一个Scroller,在...转载 2018-12-17 17:28:24 · 2851 阅读 · 1 评论 -
AS爆红程序可以运行解决
最近打开AS不知道为什么之前的项目引用都爆红,找不到引用,但是文件是存在的,也可以运行。找了这个方法,运行了可以解决:https://blog.csdn.net/yushuangping/article/details/73550612...转载 2018-12-17 17:02:53 · 673 阅读 · 0 评论 -
一个自定义倒计时button
这是一个倒计时功能的button。使用的时候,btn对象直接调用start,cancel方法就可以实现开始计时,取消计时public class CountdownButton extends android.support.v7.widget.AppCompatButton { private final int able = R.drawable.plat_conditio...原创 2018-12-12 17:22:23 · 387 阅读 · 0 评论 -
Could not find com.android.tools.build:aapt2:3.2.1-4818971.
升级gradle后,apt取消了,报错: Failed to capture snapshot of input files for task ':app:mergeDebugResources' property 'aapt2FromMaven' during up-to-date check Caused by: org.gradle.internal.resolve.Mod...原创 2018-12-05 10:08:52 · 1322 阅读 · 3 评论 -
apk加固后需要重新签名
大写的囧,不知道apk加固后需要重新签名。记录一下,吃一堑长一智。重新签名用之前的keystore就行,直接用jarsigner命令行重新签名。jarsigner -digestalg SHA1 -sigalg MD5withRSA -tsa -verbose -keystore [你的keystore文件] -signedjar [签名后生成apk名字.apk] [要加固的apk文...原创 2018-11-28 09:40:09 · 4065 阅读 · 0 评论 -
apk 反编译重打包
apk反编译就是这么简单 (这个太老了)apk反编译重打包最新工具下载地址:apktool:https://ibotpeaches.github.io/Apktool/aapt.exe:位于Android/SDK/build_tools文件夹下dex2jar: https://sourceforge.net/projects/dex2jar/files/latest/down...原创 2018-11-27 12:23:16 · 436 阅读 · 0 评论 -
Error:Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'.
AS编译报报这个错误:Error:Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'.> A problem occurred starting process 'command 'C:\Users\hpp\AppData\Local\Android\Sdk\ndk-bun...原创 2018-11-21 13:49:46 · 191 阅读 · 0 评论 -
RecycleView实现长按多选全选删除功能
一、功能:recycleView横向列表,实现item添加,长按选择,全选,全不选的删除,滑动删除功能。用realm构建数据库存储列表数据。用FloatingActionButton 作为添加按钮。思路:activity页面最下面添加一个带有删除tab的view,当长按item的时候,view显示出来。adapter的itemview里面,带有一个checkbox,长按item...原创 2018-11-20 15:15:04 · 2696 阅读 · 1 评论 -
PendingIntent, Notification,broadcastReceiver使用遇到的坑
使用PendingIntent结合 alarmManager 发送定时广播,收到广播的时候显示notification的功能,遇到了好多坑。先上代码:一、pendingIntent结合闹钟发送定时广播 Intent intent = new Intent(KeyVaule.CLOCK_IN_ACTION_NAME); intent.putExtra(KeyName.S...原创 2018-11-15 17:21:42 · 2512 阅读 · 0 评论 -
Android 数据加密方法 AES DES RSA AndroidKeyStore
Java概述一、使用SecretKeySpec生成秘钥进行对称加密一个问题 如果创建密码器的时候,Cipher cipher = Cipher.getInstance(TRANSFORMATION);TRANSFORMATION = "AES"如果和生成秘钥的算法一样设置为 “AES/CBC/PKCS5PADDING”,就会报下面的错,java.security.Invali...原创 2018-11-06 16:27:40 · 3038 阅读 · 2 评论