
Android进阶
suwenlai
天行健,君子以自强不息;地势坤,君子以厚德载物
展开
-
Android判断是否挂载外置SD/TF卡
Android判断是否挂载外置SD/TF卡转载 2022-06-27 17:15:39 · 1202 阅读 · 1 评论 -
android设备判断是否支持NFC功能
android设备判断是否支持NFC功能原创 2022-06-27 17:12:21 · 1784 阅读 · 0 评论 -
HashMap与HashTable、HashSet的区别
HashTable和HashMap区别区别一:继承的父类不同Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, ......原创 2022-06-27 17:06:59 · 991 阅读 · 0 评论 -
Activity之 isTaskRoot()
App打包apk安装后重复启动根界面的问题这个问题很特殊,一般情况下很难被发现,是Android系统一直以来的一个Bug。当我们把app打包成apk安装程序,通过点击apk文件进行安装时,会启动安装界面,并在安装成功后会跳转安装完成界面,如图:此时,当我们点击Home键退回到桌面,app的Task任务栈进入后台,然后我们点击桌面上的启动图标,正常情况下,app应该会把它对应的Task任务栈调到前台,并显示刚刚栈顶的MainActivity界面,正常流程:正常流程...转载 2021-06-21 17:31:07 · 350 阅读 · 0 评论 -
Android日志通过logcat实时输出至文件
原文地址转载 2021-06-21 16:12:52 · 6245 阅读 · 4 评论 -
Java单例---反射攻击单例和解决方法
在静态内部类中引出了反射攻击的问题,本篇就来说一下反射攻击,废话不多少说上代码:import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;public class Test1 { public static void main(String[] args) th...原创 2021-06-18 18:19:57 · 255 阅读 · 0 评论 -
android 验证码输入框自动跳转下一个
盗个别人的效果图 我的这个控件实现了可以动态配置4位 或者6位 多位的验证码 支持在layout里面动态配置public class Verificationcode extends RelativeLayout { private Context context; private TextView tv_code; private View lineView; private EditText et_code; private L...原创 2020-09-08 11:06:29 · 978 阅读 · 0 评论 -
Android 引用本地Module,依赖module中的依赖库找不见类的原因
android studio升级之后3.0,突然就找不到module里面的依赖库了,主要是compile都换成implementation造成的影响,下面看一下他们的区别:implementation声明的依赖包只限于模块内部使用,不允许其他模块使用。api声明的依赖包时, 模块依赖于此模块,此模块使用api声明的依赖包是可以被其他模块使用在app 的build.gradle 中把依赖替换,替换如下: compile 要用 implementation 或...原创 2020-09-04 14:42:49 · 1380 阅读 · 0 评论 -
The given artifact contains a string literal with a package reference ‘android.support.v4.content‘
具体报错信息:The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.原创 2020-09-04 14:39:40 · 613 阅读 · 0 评论 -
android阿里推送实现移动推送辅助通道配置
android开发中 app的保活和推送到达都是个绕不过去的坎 他俩相辅相成目前阿里推送的辅助推送通道可以进一步的帮助实现这个推送的到达率https://help.aliyun.com/document_detail/30067.html?spm=a2c4g.11186623.6.590.598b7fa8XmiUlS#h2-7-小米/华为/FCM/OPPO/VIVO/魅族 系统推送支持1. 相关概念 2. 配置应用 3. 下载扩展包 4. Proguard配置 5. 在应用...原创 2020-08-28 18:19:59 · 2876 阅读 · 2 评论 -
Android AsyncListDiffer-RecyclerView最好的伙伴
原文链接自Android5.0以来,RecyclerView渐渐取代ListView成为Android开发中使用最多的列表控件,对于RecyclerView的使用相信大家都不陌生,但对于RecyclerView的高效刷新,却是很多人不知道的。简单粗暴的刷新方式Adapter.notifyDataSetChanged();这种方式想必是大家曾经用的最多的一种刷新Adapter的方式,它的缺点很明显:无脑刷新整个RecyclerView可视区域,每个item重绘,如果你的on..转载 2020-08-28 11:32:39 · 675 阅读 · 0 评论 -
android获取设备唯一ID方法
1、方案一IMEI IMEI(International Mobile Equipment Identity)是国际移动设备识别码的缩写,由15-17位数字组成,与手机是一一对应的关系,该码是全球唯一的,并且永远不会改变。2、不同版本获取IEMI的方式 在Android 8.0(API Level 26)以下,可以通过TelephonyManager的getDeviceId()方法获取到设备的IMEI码(其实这里的说法不准确,该方法是会根据手机设备的制式(GSM或CDMA)返回...原创 2020-07-31 15:46:37 · 29968 阅读 · 2 评论 -
优化冷起白屏 splash背景图被虚拟键盘遮挡
前后效果图我就不展示了 这里大概描述一下 优化前 点击应用图标 在应用splash之前 会有一个短暂的白屏时间 体验感觉不流畅 视觉效果不好优化后 点击应用图标 直接展示splash页面的背景图(为啥我说是背景图 因为如果你的splash页面xml里面 不单单是一张图片 还有别的textview等 需要在layout里面设置的 这部分内容还是会延时展示 所以建议想展示啥 都做到图里) 这个方法只是在显示时 用你splash的背景图来把白屏遮挡...原创 2020-07-16 11:14:50 · 330 阅读 · 0 评论 -
Android SharedPreferences保存的文字末尾是【\n】的情况,在XML文件会自动拼上4个空格
这个是AndroidSharedPreferences的问题。只能通过替换末尾空白,或者禁止输入\n来保证具体原因可以参考知乎大神的讲解,link如下:知乎参考链接:在SharedPreferences中存放以\n结尾的字符串后,再次读取时你要小心原文链接...转载 2020-07-06 17:45:38 · 270 阅读 · 0 评论 -
android 捕获全局crash 崩溃闪退异常捕获
开发中有些地方未注意可能造成异常抛出未能caught到,然后弹出系统对话框强制退出。这种交互不好,而且开发者也不能及时获取到底哪里出问题,当然可以接入第三方Crash分析平台比如Bugly、instabug,其实也可以自己很简单的实现全局异常处理。未捕获异常大多发生在在多线程环境中,子线程抛出的异常是不能用主线程中try….catch捕获。可以给线程设置UncaughtExceptionHandler,当出现异常时会回调UncaughtExceptionHandler中的uncaughtExceptio原创 2020-05-29 14:49:56 · 3710 阅读 · 0 评论 -
android Error obtaining UI hierarchy
原文链接在使用uiautomatorviewer时遇到两类Error obtaining UI hierarchy报错,分别是:Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!Error taking device screenshot: EOF尝试过很多网上查找的方法,有说是Appium影响的,最后还一言不合把Appium..转载 2020-05-28 18:07:41 · 3195 阅读 · 1 评论 -
android 监听电话状态 来电 接听 挂断
如果想要监听手机的来电状态 需要接收手机的电话广播首先是静态注册 <receiver android:name=".PhoneReceiver" android:exported="true" android:enabled="true"> <intent-filter> ...原创 2020-05-07 15:59:20 · 2642 阅读 · 2 评论 -
android项目刚clone拉下来就提示有好多文件被修改过。。。。
自己写的项目 传到github上面 然后突然心血来潮想拉下来看看 结果刚刚clone下来 就有好多文件显示红色 git status之后 一片修改过的文件提示 但是我毛都没修改啊 经过我n次的重新拉取 还是这样 然后就是清除studio缓存 重启 无效 网上查到 可能是win和mac切换这编写项目的原因 导致部分文件的空格有改变 或者是权限变化...原创 2019-11-29 17:57:40 · 1669 阅读 · 0 评论 -
Android webview里面的输入框点击不弹出软键盘 锁屏再解锁 重新获取焦点之后 就可以了
webview中的输入框有时候会调不起软键盘 根据不同情况 原因有几个 有的是因为自定义webview的构造函数传参数有问题 有的是焦点问题 我这里面遇到的就是焦点问题 由于web页面的前端实现问题 导致获取焦点有问题 需要手动给他获取焦点 有的人说要给webview获取焦点即可。调用了方法,代码如下:webView.requestFocus();但是这...原创 2019-11-22 16:27:15 · 970 阅读 · 0 评论 -
android调用拍照后存相册旋转问题和拍照后相册不显示问题
有个上传头像的功能 涉及到拍照 裁剪 相册选择 这几个功能 然后就是一步一个坎。。。。第一个问题 拍照后相册查找不到 不显示 系统相册都没有 有的手机需要重启之后才会显示这个问题的原因就是拍照之后要通知系统刷新相册才能显示 在你想要更新相册的地方 发一个广播 /** * 通过file来通知系统相册更新 拍照后调用 * * @...原创 2019-10-31 15:23:14 · 468 阅读 · 0 评论 -
android调用系统裁剪图片 返回模糊 不清晰的问题
基本这个功能都是在头像设置的时候会用到Android 从相机拍完照片 然后跳去系统自带的裁剪 或者从相册选取图片裁剪 然后把裁剪好的图片设置成头像这里直接贴上跳到裁剪部分的代码 private void photoClip(Uri uri) { // 调用系统中自带的图片剪裁 Intent intent = new Intent("com.andr...原创 2019-10-28 16:44:54 · 1544 阅读 · 6 评论 -
Android 可点击的 有边界的 可拖拽控件
可点击的 有边界的 可拖拽控件有这么一种需求 就是要求控件平时可以点击 然后呢 又可以在屏幕内随意拖拽 然后又不希望控件被拖出屏幕 以屏幕为边界我们先捋一下思路 然后才能实现一下这个功能 主要功能点就是分为三个部分 我们逐级来实现 第一步 首先要实现可拖拽 这个要通过触摸事件的监听来做处理第二步 要实现有边界 需要在拖拽过程中 或者在拖拽结束...原创 2019-10-18 14:33:27 · 884 阅读 · 0 评论 -
Android retrofit2 post上传图片的同时 要上传多个参数
//构建body //addFormDataPart()第一个参数为表单名字,这是和后台约定好的 Model model = new Model(mContext); MultipartBody.Builder builder = new MultipartBody.Builder() .setType(Multip...原创 2019-10-15 18:53:21 · 1634 阅读 · 0 评论 -
the Android gradle plugin version 2.3.0-beta1 is too old please update to the lateset version
the Android gradle plugin version 2.3.0-beta1 is too old please update to the lateset version把build.gradle 里面的 classpath 改成2.2.3 dependencies { classpath 'com.android.too原创 2017-02-06 10:49:50 · 2699 阅读 · 2 评论 -
androidstudio/IDEA文件类型图标
SymbolsCommonIconDescriptionClassAbstract Java classAnnotationEnumerationExceptionFinal Java class转载 2017-02-06 15:00:45 · 1059 阅读 · 0 评论 -
Android studio如何恢复误删的文件或者文件夹
当你一不小心 或者脑抽 删掉(delete)了一个文件 或者更脑抽的delete你的module之后 你咋办这时候你应该淡定的百度一下 哈哈哈 开个玩笑你在项目的最上层 project目录点击右键 选项里面有一个Local History 选择 show histroy 选择你想恢复的 如果找不到 可以通过右上角搜索 找到之后 点击左上角的r原创 2017-02-06 14:12:27 · 25878 阅读 · 9 评论 -
Android Studio 中java文件右下角显示红色j而不是C标识
Android studio 中Java文件右下角图标变成红色j 而不是大的C标识了 而且你module名称也不是加粗的 如图中间那个module名称 点进去之后所有的java文件都变成红标了 在IDEA中 这个小红标的意思是 Java class located out of the source root. Refer to the section C原创 2017-02-06 14:42:54 · 29914 阅读 · 16 评论 -
新一代开源Android渠道包生成工具Walle
在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅—生成渠道包)已经行不通了,在此应用签名方案下如何快速生成渠道包呢?本文会对新的应用签名方案APK Signature Scheme v2以及新一代渠道生成工具进行详细深入的介绍。新的应用签名方案APK Signatu转载 2017-01-16 10:15:15 · 1746 阅读 · 0 评论 -
recyclerview实现拖拽排序和侧滑删除
Recyclerview现在基本已经替代Listview了,RecyclerView也越来越好用了 当我们有实现条目的拖拽排序和侧滑删除时 可以直接时候Recyclerview提供的API就可以直接实现了先贴上主要代码private void initveiw() { ArrayList<String> items = new ArrayList<>(...原创 2017-02-07 13:27:44 · 626 阅读 · 0 评论 -
Android studio 如何在android选项下生成jniLibs目录
在选择 Android 的选项下面显示的jniLibs 目录和选择 Project 选项下面的libs 其实是一个 但是在Android选项下面的jniLibs不是自动生成的 需要在module的build.gradle里面的android下面配置sourceSets 如下,然后sync一下就ok了android { compileSdkVersion 25原创 2017-01-16 15:05:22 · 7494 阅读 · 0 评论 -
Builder设计模式Demo
作为Java/Android开发者, 如果你想设计一个通用的库, Builder模式几乎肯定是会用到的, 我们需要提供良好的入口/接口来使用者可以弹性地构造他们需要的对象.像一些优秀的开源库, 例如Glide, OkHttp等都在构造Glide, OkHttpClient时用到Builder模式, 例如OkHttpClient的创建, 如下节选OkHttpClient.java的代码:...原创 2017-02-07 16:11:29 · 455 阅读 · 0 评论 -
单例模式的线程安全
以下是单例模式的特点:单例类只能有一个实例。单例类必须自己自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。种类的话不好说有几类,因为要考虑到是否在多线程下运行,下面来介绍主要的几类:懒汉类//懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() { }原创 2017-01-16 17:53:26 · 531 阅读 · 0 评论 -
启动优化 让app秒开
优化Application从用户点击launcher图标到看到界面第一帧为应用启动过程,主要会经过以下这些方法:main()->Application:attachBaseContext()->onCreate()->Activity:onCreate()->onStart()->onResume()main->Activity创建的这个过程会经过一系列framework层的操作,对于原创 2017-01-19 16:35:54 · 694 阅读 · 2 评论 -
mvp
MVP是个好东西,可是最近项目一直用的是mvc模式,先马克下之前鼓捣过的mvp框架,过年回家再用它重构下代码。先上依赖库 compile 'io.reactivex:rxandroid:1.2.1' compile 'com.squareup.okhttp3:okhttp:3.3.1' compile 'io.reactivex:rxandroid:1.1.0'原创 2017-01-19 16:59:51 · 621 阅读 · 0 评论 -
FragmentTabHost的使用方法
@Override public void setTabHost(FragmentTabHost tabHost) { fragmentArray = imainModel.getFragments(); int count = fragmentArray.length; textArray = imainModel.getText...原创 2017-02-20 11:32:34 · 377 阅读 · 0 评论 -
Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
嵌套Fragment的使用及常见错误嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment.使用时, 主要要依靠宿主Fragment的 getChildFragmentManager() 来获取FragmentManger.虽然看起来和在activity中添加fragment差不多, 但因为fragment生命周期及管转载 2017-03-01 17:48:25 · 493 阅读 · 0 评论 -
Error:No service of type Factory<LoggingManagerInternal> available in ProjectScopeServices.
从github上clone了一个项目,却出现了Error:No service of type Factory available in ProjectScopeServices.的提示clean一下项目,终于可以看到详细信息了。接下来就继续搜错,could not create plugin of type 'androidmavenplugin'.的因为原创 2017-02-13 11:44:27 · 11594 阅读 · 5 评论 -
如何动态生成Selector状态选择器
前几天在项目有优化的时候,突然想动态生成selector 所以就写了一个工具类 /** * 动态设置 点击事件 selector 的工具类 可以从本地添加 也可以从网络添加 * Created by suwenlai on 16-12-26. */public class SelectorUtil { /** * 从 drawable 获取图片 id 给...原创 2017-01-23 14:07:20 · 3119 阅读 · 0 评论 -
自己写的一个SP工具类
/** * SharedPreferences 的工具类 * Created by suwenlai on 16-12-23. */public class SPUtil { /** * Sp 的文件名 */ public static String FILLNAME = "config"; /** * 存入某个 key 对应的 ...原创 2017-01-23 14:12:53 · 16895 阅读 · 2 评论 -
activity跳转的封装
写项目的时候突然脑子抽筋 想写一个activity跳转的工具类 可以用于activity的跳转 省着每次都要new intent 然后各种putExtra() /** * Activity 跳转工具类 * Created by suwenlai on 16-12-22. */public class StartActivityUtil { public S...原创 2017-01-23 14:16:17 · 1652 阅读 · 0 评论