android
android
倒骑驴走着瞧
不积跬步无以至千里
展开
-
Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
安装某个debug包的时候提示如下C:\Users\test>adb install "C:\Users\test\Downloads\test.apk"Performing Streamed Installadb: failed to install C:\Users\test\Downloads\test.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]解决办法:adb install -t "C:\Users\test原创 2021-10-21 09:52:52 · 444 阅读 · 0 评论 -
Suggestion: add ‘tools:replace=“android:appComponentFactory“‘ to <application>
原生集成uni-app sdk时候遇到的问题-86 Error: Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from [androidx.core:core:1.3.1] AndroidManifest.xml:24:18-86 is also present at [com.android.support:support-compat:28.0.0] Android原创 2021-09-26 15:20:31 · 977 阅读 · 0 评论 -
javax/xml/bind/JAXBException
新AS版本打开旧项目报错“javax/xml/bind/JAXBException”解决办法:打开project structure选中SDK Location -》JDK location 选择环境变量中配的版本原创 2021-08-30 14:40:52 · 414 阅读 · 0 评论 -
浏览器调试webview
打开webview调试模式webView.setWebContentsDebuggingEnabled(true)google浏览器chrome://inspect/#devices点击inspect,需要科学上网或者使用离线工具(不做演示),下面以edge浏览器为例edgeedge://inspect/#devices效果如下,在和前端同事联调时候就可以看到js的报错了仅此记录...原创 2021-08-20 16:17:54 · 918 阅读 · 0 评论 -
判断app是处于前台还是后台
方法一//应用前后台切换的判断registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityStopped(Activity activity) { Log.v("viclee", activity + "onActivityStopped"); count--; if (count == 0) { timeStart = new Date().get原创 2021-08-19 14:31:10 · 413 阅读 · 0 评论 -
fusesource和eclipse的mqtt的demo实现
使用资源mqtt服务器: apollo下载mqtt pc端测试工具 :mqttfx下载mqtt服务解压apollo包到指定文件夹(如: E:\tools)cmd打开dos窗口,进入 E:\tools\apache-apollo-1.7.1-unix-distro\apache-apollo-1.7.1\bin执行命令创建名称为“mybroker”的broker apollo.cmd create mybroker;会在当前文件夹下生成mybroker的文件夹进入mybroker文件夹执原创 2021-08-05 15:31:36 · 384 阅读 · 0 评论 -
系统应用默认授权及开机启动
环境设备root系统修改了framework层针对某个app做了处理,只有当这个app是系统应用(在system/app/目录下)并且包名为com.a.b的情况下,默认打开某几个权限镜像生成、烧镜像存放app到/system/app/目录下通过命令生成系统img开机启动监听activiton为android.intent.action.BOOT_COMPLETED广播,启动应用...原创 2021-08-04 16:29:07 · 211 阅读 · 0 评论 -
文本渐变色
产品设计遇到了文本渐变和背景渐变,效果图遇到问题:渐变失效渐变色太浅解决:没有默认颜色,渐变色就会很淡textview最好wrapcontent或者准确的dp值,如果设置成match_parent渐变会失效但是文本内容宽度只有一小部分那么渐变会失效(因为是根据文本长度进行渐变的,如果宽度与实际不一致就会出现失效的问题)因为2所以外层一般需要包裹一层工具类 public class TextViewUtils { public static void setGradien原创 2021-07-20 18:19:17 · 188 阅读 · 0 评论 -
安卓手机导出apk
查看所有安装的应用的包名adb shell pm list package查看某个app的安装路径(com.example.test为想要导出的apk的包名)adb shell pm path com.example.testpackage:/data/app/com.example.test-AKABO9v12343qqs2KQ3lrqA==/base.apk导出某个appadb pull 上一步的路径 导出到哪里如:导出到本地E盘下test文件夹adb pull /.原创 2021-07-15 17:58:31 · 731 阅读 · 2 评论 -
判断蓝牙是否打开
BluetoothAdapter blueadapter = BluetoothAdapter.getDefaultAdapter();if (!blueadapter.enable()) { ToastUtils.showShort("请打开蓝牙"); return;}原创 2021-07-07 15:24:47 · 1164 阅读 · 0 评论 -
EditText setFocusable 设置成false后再改为true还是无法获取光标
禁止获取光标etTest.setFocusable(false); 可以获取光标etTest.setFocusableInTouchMode(true); etTest.setFocusable(true);原创 2021-07-05 14:09:50 · 492 阅读 · 0 评论 -
Android模块化、组件化、插件化区别
不同特点:1.模块化(lib)主要解决问题是重用问题,不强调单独编译2.组件化(lib)主要解决问题是功能拆分,强调单独编译3.插件化(application)是所有组件都为apk的特殊组件化,特点可热更新通讯方式不同点:1.模块化相互引入,需要引入需要的module2.组件化通讯方式分为隐式和路由。3.插件化本身是不同进程,因此是binder机制进程间通讯。转自:Android模块化、组件化、插件化区别...转载 2021-04-14 22:26:34 · 772 阅读 · 0 评论 -
android ble
扫描设备-发现设备-连接设备-蓝牙通信-断开连接-释放资源Android BLE 蓝牙开发入门原创 2021-04-08 21:36:47 · 348 阅读 · 0 评论 -
StatusBarUtil备份
import android.annotation.TargetApi;import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.os.Build;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.vi原创 2021-04-07 22:08:27 · 106 阅读 · 0 评论 -
cannot access com.*.*
android studio 无法访问到某个包下的类,场景主model访问到子model中引用的第三方库中的类;将子model中的依赖方式由implementation 改为api即可原创 2021-04-03 14:16:45 · 2105 阅读 · 0 评论 -
android ignore文件备份
Built application files*.apk*.ap_Files for the ART/Dalvik VM*.dexJava class files*.classGenerated filesbin/gen/out/Gradle files.gradle/build/Local configuration file (sdk path, etc)local.propertiesProguard folder generated by Eclipseprogua原创 2021-03-31 15:34:50 · 139 阅读 · 0 评论 -
LiveData简单使用
liveData为某个属性添加观察者,然后数据变化后通知观察者对UI更改;例子打分的demo,用最基本的语法方式实现,那么activity中会持有三个组件的引用和其对应的点击事件,在点击时候计数器增加并同时更新textview显示;这里引用网络的longway老师的一张图,通过livedata将点击控件后做的两步操作分开;1.livedata对数据添加观察者,只要数据变化就去更新textview;2.点击事件只对分数进行更改代码如下/** * 测试LiveData */public原创 2021-03-18 23:57:15 · 597 阅读 · 0 评论 -
ViewModel 简单使用
viewmodel:以注重生命周期的方式管理界面相关的数据,为Activity/Fragment 获得以及保留必要信息通过下面例子引出viewModel,界面如下,界面中三个控件,最上面是个分数,下面两个按钮分别对分数做+1和+3的操作MainActivitypackage com.hj.jetpack;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.原创 2021-03-18 22:36:45 · 757 阅读 · 1 评论 -
android文件目录
api路径Environment.getDataDirectory().getAbsolutePath()/dataEnvironment.getDownloadCacheDirectory().getAbsolutePath()/data/cacheEnvironment.getExternalStorageDirectory().getAbsolutePath()/storage/emulated/0Environment.getExternalStorage...原创 2021-02-23 17:02:36 · 1169 阅读 · 1 评论 -
查看/data/data/包名目录下的数据
手机root的情况下直接通过android studio 的Device File Explorer 即可查看;包名下的文件都可以查看dada/data/下任意包下的文件都可以查看到手机未root1.如果该包对应的app是debug包,那么可以通过android studio可以直接查看;实际执行了adb shellrun-as com.test.a2.如果该包对应的app不是debug包,那么会提示 run-as:package not debuggable...原创 2021-02-23 15:53:56 · 3364 阅读 · 0 评论 -
登录界面全屏+背景图片沉浸式+键盘将输入框顶起来+键盘弹起背景不会被弹起或者压缩
需求:界面背景沉浸键盘弹起输入框不会被遮挡键盘弹起背景不动效果图如下:界面布局文件:(在需要被顶起的布局上添加android:fitsSystemWindows="true"属性,如下方LinearLayout)<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+原创 2020-08-14 11:31:57 · 732 阅读 · 0 评论 -
android虚线边框
效果图:使用到的属性:dashWidth 虚线宽度dashGap 虚线点之间的间隙 <!--虚线边框--> <stroke android:width="1dp" android:color="@android:color/black" android:dashWidth="1dp" android:dashGap="2dp" />shape文件:<?xml version="1.0"原创 2020-08-10 09:52:53 · 1315 阅读 · 0 评论 -
移动端上传图片失败
环境:RN 问题反馈可以上传最多4张图片上传方式:图片base64方式问题:上传1张图片没有出现问题,上传多张就会出现上传失败原因:单张图片转base64后请求体大小未超过后端tomcat请求体大小限制2M(默认),当上传多张时,就会出现报错,postman中报错如下解决方案:方式0:将图片分开上传,一次上传一张,但是治标不治本,如果单张图片过大也会出现该问题,这种办法pass方式1:在前端不改上传图片方式(base64)的情况下,后端适当增大post请求体内容大小限制方式2:前后端修改接原创 2020-08-06 15:39:07 · 722 阅读 · 0 评论 -
textview 跑马灯-内容从右至左无限轮播
textview 跑马灯:从右到左内容无限轮播android:ellipsize=“marquee”android:focusable=“true”android:focusableInTouchMode=“true”android:marqueeRepeatLimit=“marquee_forever”android:singleLine=“true”<TextView android:layout_width="wrap_content" android原创 2020-08-06 13:42:13 · 706 阅读 · 0 评论 -
drawable-v21 drawable-v24资源适配文件
随着AS版本及android系统的版本不断升级,新建项目的默认创建适配文件也由drawable-21升级到了drawable-24,这个文件与targetSdkVersion及手机android系统版本是什么关系呢?drawable-21 适配5.0及以上手机资源文件drawable-24 适配7.0及以上手机资源文件两者只与手机的android版本有关,与targetSdkVersion无关测试案例:drawable-24中放置一个ripple的xml文件,targetSdkVersion 为2原创 2020-07-31 17:31:23 · 3062 阅读 · 0 评论 -
提高二维码界面亮度
因应用场景中反光等问题影响,app中二维码识别成功率不高;提交当前二维码界面亮度可以提交成功率 /** * 设置当前Activity显示时的亮度 * 屏幕亮度最大数值一般为255,各款手机有所不同 * screenBrightness 的取值范围在[0,1]之间 */ public void setBrightness(Activity activity, int brightness) { WindowManager.LayoutPa原创 2020-07-27 14:20:53 · 2410 阅读 · 1 评论 -
android应用内跳转到微信
跳转至微信 Intent intent = new Intent(); ComponentName cmp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI"); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.原创 2020-07-20 09:30:39 · 1428 阅读 · 0 评论 -
android向前兼容和向后兼容
向前兼容:适配的targetSdkVersion版本的app,可以正常运行Build.VERSION.SDK_INT>targetSdkVersion的手机上向后兼容:通过兼容库(androidx、supportv7、v4等)让低版本实现高版本的效果系统适配:targetSdkVersion版本及以下(阴影部分)的所有系统版本都需要做适配,如上图中targetSdkVersion=28,那么得根据app需要将9.0系统及以下的所有特性都做适配,如适配6.0权限、7.0 fileprovid.原创 2020-07-16 16:16:30 · 904 阅读 · 0 评论 -
android 拍照resultCode 返回0,不等于RESULT_OK -1
问题:无论点击拍照后的对勾还是取消,resultCode 都为0; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK && requestCode ==原创 2020-07-15 15:59:42 · 3227 阅读 · 3 评论 -
webview页面的activity点击返回按钮
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { mWebView.goBack(); return true; } return super.onKeyDown(keyCo...原创 2020-07-13 13:30:58 · 314 阅读 · 0 评论 -
android studio查看第三方app布局
网上的tools->android->Android Device Monitor 因为AS版本升级已经失效解决办法找到AS->File->Settings->Android SDK中的Android SDK Location路径,双击monitor.bat可能因为我的电脑有eclipse的原因,打开了eclipse并提示错误右键monitor.bat 以管理员身份运行,即可正常打开monitor...原创 2020-07-09 11:03:42 · 2599 阅读 · 0 评论 -
简单集成友盟统计
16年记录了一篇,现在官方文档更新了;重新记录下在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK新maven仓库地址maven { url 'https://dl.bintray.com/umsdk/release' }添加后的结果// Top-level build file where you can add configuration options common to all sub-projects/modules.bui原创 2020-07-01 11:22:18 · 1301 阅读 · 0 评论 -
adb 打印日志到本地
adb 打印日志到本地adb logcat -v time > e:\log.txt原创 2020-06-28 19:07:56 · 1670 阅读 · 0 评论 -
解析json异常Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $问题
环境:某个接口返回的数据格式为{ "code": "200", "data": { "age": 18, "username": "zhangsan" }, "msg": "操作成功"}接口调用异常情况下返回{ "code": "101", "msg": "请求异常"}想起在开发安卓时候经常会遇到这类问题如果后端同事给的是null,gsonformat会将字段自动解析成object类型,这显然是不对的额原创 2020-06-21 23:04:06 · 55340 阅读 · 6 评论 -
句柄泄漏Could not read input channel file descriptors from parcel
报错日志:06-18 19:41:06.879 1635-32035/com.hj.test E/MemoryHeapBase: error creating ashmem region: Too many open files --------- beginning of crash06-18 19:24:20.955 1407-1407/com.hj.test E/AndroidRuntime: FATAL EXCEPTION: main Process: com.hj.test,原创 2020-06-19 18:54:42 · 862 阅读 · 0 评论 -
集成leakcanary
简单集成leakcanary,记录下来,方便后期项目中直接使用地址导入依赖添加权限Application中初始化监听服务LeakService清单文件中注册监听服务地址github地址官方地址导入依赖debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5'添加权限<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTE原创 2020-06-05 17:20:52 · 1218 阅读 · 0 评论 -
集成bugly
清单文件中添加权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_LOGS" too原创 2020-06-05 16:16:06 · 149 阅读 · 0 评论 -
ANR-Input dispatching timed out
Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 6. Wait queue head age: 8813.6ms.) 出现该问题的情原创 2020-05-28 15:27:13 · 5062 阅读 · 0 评论 -
Can reqeust only one set of permissions at a time
问题:Can reqeust only one set of permissions at a time使用场景:使用PermissionsDispatcher进行动态权限申请,因业务需求,同时初始化了MainActivityPermissionsDispatcher.doSomeThingOneWithPermissionCheck(this);//申请了读写内存权限MainActi...原创 2020-04-21 15:30:38 · 3120 阅读 · 0 评论 -
字符串工具类_姓名脱敏、身份证号脱敏
/** * 姓名脱敏 * * @param name * @return */ public static String desensitizeName(String name) { if (!TextUtils.isEmpty(name)) { char[] chars = name.toCharA...原创 2020-04-20 19:03:48 · 1235 阅读 · 0 评论