
Android
文章平均质量分 52
柚子君.
这个作者很懒,什么都没留下…
展开
-
Android发送邮件报UnknownHostException: smtp.163.com错误的处理
现象说明在做邮件自动发送时,出现以下问题:在连接电脑开发调试时,邮件发送一直正常,断开调试一段时间内,邮件也能正常发送,但是过了一段时间后,发送出现异常,获取报错日志:Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.163.com, 564; timeout -1; nested exception is: java.net原创 2021-05-10 23:20:17 · 3637 阅读 · 3 评论 -
迁移Android项目到AndroidX以及新旧工件和类映射关系表
文章目录1.迁移Android项目到AndroidX2. 新旧工件映射关系表3.新旧类映射关系表1.迁移Android项目到AndroidX 由于Google以后将不再维护更新android.support库,因此有必要将原有项目迁移至androidx库。 AndroidX 会将原始支持库 API 软件包映射到 androidx 命名空间。只有软件包和 Maven 工件名称发生...原创 2019-10-05 03:04:43 · 4414 阅读 · 0 评论 -
Android取消EditText自动聚焦、自动弹出输入法的方法
当跳转到带有EditText的界面后,App会自动弹出输入法,严重影响了用户体验。因此,我们有时候需要取消EditText的默认聚焦。方法一:在EditText的父控件中加上这两行代码:android:focusable="true" android:focusableInTouchMode="true"例如:<?xml version="1.0" encoding="utf-...原创 2019-10-04 06:13:56 · 2539 阅读 · 2 评论 -
PopupWindow的isShowing()方法总是返回false的原因及解决方法
问题: 在使用PopupWindow时,通常需要通过其isShowing()方法来判断PopupWindow显示与隐藏,然而isShowing()如果不注意使用,就会得到总是返回false的结果。原因: 当我们通过点击其他组件(如按钮)触发PopupWindow时,焦点聚焦在那个组件上而不在PopupWindow的视图里,由此造成系统认为PopupWindow对象是隐藏的,因此一...原创 2019-10-02 01:42:53 · 3373 阅读 · 0 评论 -
setOnItemClickListener cannot be used with a spinner错误
错误提示:java.lang.RuntimeException: setOnItemClickListener cannot be used with a spinner.错误原因:Spinner对象不支持使用setOnItemClickListener方法监听点击事项解决方法:使用setOnItemSelectedListener方法代替setOnItemClickList...原创 2019-04-12 12:56:23 · 5982 阅读 · 0 评论 -
More than one file was found with OS independent path 'lib/armeabi/xxxx.so'解决方法
错误在组件化方案中容易出现以下问题More than one file was found with OS independent path 'lib/armeabi/xxxx.so'原因这个错误的意思是同样的依赖路径存在两个,说人话就是两次导入了同一个名称的依赖,然后系统就不知道要以哪一个为准。解决方法找到so库存放目录,找出相同的so文件,删掉其中一个,这个方法简单除暴,但是也...原创 2019-03-31 14:33:42 · 43794 阅读 · 2 评论 -
glide加载图片不使用缓存
Glide加载相同URL时由于缓存无法更新图片的问题如果是本地图片,可以采取取消缓存的方式,这样是比较简单的操作: .skipMemoryCache(true) // 不使用内存缓存 .diskCacheStrategy(DiskCacheStrategy.NONE) // 不使用磁盘缓存 .into(imageView); 无论本地图片网络图片,都可以使用另一个...原创 2019-03-31 00:31:10 · 11433 阅读 · 0 评论 -
Android TextView 多种方式显示图片
1.XML文件中指定属性值这种方式应该是最常用的了,在TextView的左上右下显示图片,可用android:drawableLeft android:drawableTop android:drawableRight android:drawableBottom实例代码如下:<TextView android:id="@+id/textview_01" an...原创 2019-03-30 13:48:05 · 1050 阅读 · 0 评论 -
Unable to resolve host "***.***.com": No address associated with hostname
错误Unable to resolve host "verify.baidubce.com": No address associated with hostname原因出现这个错误的原因一般是由于网络出错了,此时可以从一下两个方面分析程序。android设备网络连接没打开,例如3G网络和WIFI网络,或者当前的网络无可用,无法联网如果遇到这种错误时,请先查看网络是否已正常连接,网...原创 2019-03-30 13:08:04 · 34131 阅读 · 1 评论 -
Toast报Can't create handler inside thread that has not called Looper.prepare() 错误
错误使用子线程调用Toast报Can’t create handler inside thread that has not calledLooper.prepare()错误。原因toast的实现需要在activity的主线程才能正常工作,传统的非主线程不能使toast显示在actvity上,只能通过Handler可以使自定义线程运行于Ui主线程。解决方法Looper.prepare()...原创 2019-03-30 11:16:09 · 3250 阅读 · 0 评论 -
flutter initializing gradle解决方案
方案一该方案是认为中国访问不了google,改为使用镜像访问。在Flutter SDK 找到 这个gradle 文件 修改仓库地址即可。修改该文件: maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repositor...原创 2019-03-03 00:40:54 · 980 阅读 · 0 评论 -
Failed to launch emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration!
在使用Android Studio进行开发或使用其他软件进行开发(如使用VS Code进行Flutter开发)时,偶尔会出现如下问题:Failed to launch emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration!Please ensure Windows Hypervisor...原创 2019-03-02 22:39:30 · 9353 阅读 · 0 评论 -
更改Android Studio的Logcat缓冲区大小以及Logcat刷新过快的解决方法
方法一找到 Android Studio的安装目录\bin\idea.properties 文件修改文件中的idea.cycle.buffer.size=1024 例如: idea.cycle.buffer.size=20480方法二通过Android Studio进行设置:File–>Settings–>Editor–>General–>Consol...原创 2019-02-26 10:15:57 · 10127 阅读 · 1 评论 -
禁用RadioGroup的所有RadioButton点击选中
禁用RadioGroup的所有RadioButton点击选中对于RadioGroup来说,一般控件可以使用的setEnable() ,setClickable(),setFocusable()都会失效,那么如果我们想禁用RadioGroup下的所有RadioButton都不可以点击,那么我们需要遍历RadioGroup内的所有RadioButton,单个进行禁用。代码如下: /** ...原创 2019-02-26 09:59:21 · 5211 阅读 · 0 评论 -
Objects.requireNonNull( )方法说明
1.方法介绍有时候,我们为了使得对象不为空,可以使用Objects.requireNonNull( )方法对对象进行判断。2.源代码 /* @param obj 需要检测是否为空的对象 * @param <T> 对象类型 * @return 对象不为空则返回该对象 * @throws 对象为空则报NullPointerException异常...原创 2019-02-26 09:47:33 · 45282 阅读 · 2 评论 -
android滑动监听 上下滑动 左右滑动
1.获取布局文件或视图View获取布局文件这种方式的滑动感应范围是整个布局。private void getTouchView(){ // 获取布局文件 LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE); vie...原创 2019-02-25 21:15:20 · 7018 阅读 · 0 评论 -
Cannot fit requested classes in a single dex file # methods: 66370 > 65536
问题Cannot fit requested classes in a single dex file (# methods: 66370 > 65536)原因分析主要原因是你的项目貌似有点大,已经超过65k个方法。一个dex已经装不下了,需要个多个dex,也就是multidex ,因为Android系统定义总方法数是一个short int,short int 最大值为65536。解...原创 2019-02-24 17:30:28 · 4793 阅读 · 1 评论 -
java使用BigDecimal进行货币金额计算
float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。,而且使用BigDecimal类也可以进行大数的操作。方法类型描述public BigDecimal(double val)构造将double表示形式转换为BigDecimalpublic BigDecimal(int val)构造将i...原创 2019-02-23 23:03:04 · 4706 阅读 · 0 评论 -
常用正则表达式
欢迎补充!一、校验数字的表达式1. 数字:^[0-9]*$2. n位的数字:^\d{n}$3. 至少n位的数字:^\d{n,}$4. m-n位的数字:^\d{m,n}$5. 零和非零开头的数字:^(0|[1-9][0-9]*)$6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7. 带1-2位小数的正数或负数:^(\-...原创 2019-02-08 00:02:36 · 393 阅读 · 0 评论 -
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_
异常信息:Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to fal...原创 2019-01-14 14:20:04 · 995 阅读 · 0 评论 -
问题:No toolchains found in the NDK toolchains folder for ABI with prefix解决方法
问题:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android解决方法:1.找到自己本地的android-sdk,如果下载了ndk的相关sdk,会有一个叫“ndk-bundle”的文件夹2.打开toolchains文件夹3.可以发现,里面没...原创 2019-01-12 12:43:33 · 4201 阅读 · 2 评论 -
问题: Your project contains C++ files but it is not using a supported native build system.解决方法
使用JNI时出现问题:Error: Your project contains C++ files but it is not using a supported native build system. Consider using CMake or ndk-build integration. For more information, go to: https://d.a...原创 2019-01-12 11:04:25 · 2900 阅读 · 2 评论 -
问题:Android NDK location should not contain whitespace...解决方法
在Android Studio环境开发时,可能会遇到如下问题:Android NDK location should not contain whitespace, as this can cause problems with the NDK tools.或者android SDK Location should not contain whitespace, as this c...原创 2019-01-12 10:45:46 · 11267 阅读 · 0 评论 -
Activity生命周期
Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。Acitivity一般意义上有四种状态:1.当Activity位于栈顶时,此时正好处于屏幕最前方,此时处于运行状态;2.当Activity失去了焦点但仍然对用于可见(如栈顶的Activity是透明的或者栈顶Act...原创 2018-11-19 17:07:28 · 737 阅读 · 0 评论 -
Android动态权限获取
对于Android6.0及其以上版本,有九组权限不能通过AndroidManifest文件配置获取,需要通过运行时动态请求来获取,这9组权限如下图所示:动态请求权限的代码示例如下,大家可以参考来适应自己的项目: /** * * @param activity 传入所在的Activity * @param permissions 权限组,如new S...原创 2018-11-18 23:46:03 · 564 阅读 · 0 评论 -
Repo工具小教程(Android版本导出)
repo 签出某个Android版本:repo forall -c git checkout android-6.0.1_r171:下载android主线分支repo init -u https://android.googlesource.com/platform/manifest2:下载android其它分支repo init -u https://android.google...原创 2018-11-11 15:10:49 · 1548 阅读 · 0 评论 -
国内下载Android源码教程
本教程采用Linux系统Ubuntu为例进行Android源码的下载一、下载环境配置1.如果你的Linux系统或虚拟机还没有安装JDK,请先安装JDK,安装命令为sudo apt-get install openjdk-8-jdk如果无法安装,可以先检查下网络是否可用,如果网络可用,可能是安装源没有更新,可以使用以下命令进行源更新:sudo apt-get update...原创 2018-11-10 13:21:06 · 1999 阅读 · 0 评论 -
Android高版本联网失败报错:Cleartext HTTP traffic to xxx not permitted解决方法
前言:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android No...原创 2018-09-27 11:03:21 · 132129 阅读 · 76 评论 -
Android自定义View(四)-基础应用篇
如果你还没了解过自定义View的一些原理,建议先看一下这几篇博客,做个了解。Android自定义View(一)-Measure原理篇Android自定义View(二)-Layout原理篇Android自定义View(三)-Draw原理篇在开始之前,我们先来看下自定义View的步骤:1.创建自定义View类2.自定义View的属性3.在自定义View的构造方法中获得自定义...原创 2018-09-22 15:49:25 · 487 阅读 · 0 评论 -
Android自定义View(三)-Draw原理篇
Android自定义View通常需要经过measure、layout和draw过程。如果你没有了解过measure过程,可以先看看这篇文章。如果你没有了解过layout过程,可以先看看这篇文章。一、draw的作用:绘制View视图二、draw过程:类似measure和layout过程,draw过程也分为两种情况View类型 Draw过程 单一View 仅绘制Vi...原创 2018-09-22 13:55:49 · 954 阅读 · 0 评论 -
Android自定义View(二)-Layout原理篇
Android自定义View通常需要经过measure、layout和draw过程,如果你没有了解过measure过程,可以先看看这篇文章。一、Layout的作用:计算视图的位置,即Left、Top、Right、Bottom四点的位置二、layout过程:跟measure类似,layout也会根据View的类型分成两种情况进行处理。View类型 layout过程 单一View...原创 2018-09-22 11:35:48 · 2081 阅读 · 0 评论 -
Android自定义View(一)-Measure原理篇
在自定义View中有时需要测量View的尺寸,因此,了解View的Measure过成有助于我们开发自定义View。一、目的:测量View的宽与高在有些情况下,需要多次测量(measure)才能够最终确定View的宽高(比如父视图MeasureSpec使用UNSPECIFIED模式等),在这种情况下,通过onMeasure方法获得的宽高很可能是不准确的,因此,《Android开发艺术探索》建...原创 2018-09-22 10:56:26 · 2279 阅读 · 0 评论 -
邮箱正则表达式
public static boolean isEmail(String email){ String pattern = "^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-ZA-Z\\.]*[a-zA-Z]$"; Pattern p = Pattern.compi...原创 2018-08-21 14:41:49 · 4741 阅读 · 0 评论 -
Android蓝牙应用开发
本文介绍从查找蓝牙到蓝牙间互相通信的几个基本开发步骤(1)设置权限:在Android系统中使用蓝牙一般需要在AndroidManifest.xml中设置蓝牙权限<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.perm...原创 2018-08-21 10:47:49 · 296 阅读 · 0 评论 -
Android源码百度网盘下载
Android系统源码,同步官方无任何改动为了减小源码包体积,删掉了.repo文件夹,对编译无影响.采用7z高比率压缩体积小巧,下载飞速,再也不用忍受官网的断线掉线各种连不上了!百度网盘[提取码: fvty]...原创 2018-08-13 18:55:55 · 8501 阅读 · 9 评论 -
[Android5.0源码透析](四)JNI调用Java对象
一、得到静态(static)和实例(instance)的域与方法的JNI函数函数 描述 GetFieldID 得到一个实例的域的ID GetStaticFieldID 得到一个静态的域的ID GetMethodID 得到一个实例的方法的ID GetStaticMethodID 得到一个静态方法的ID 实例://创建一...原创 2018-08-13 09:27:58 · 341 阅读 · 0 评论 -
[Android5.0源码透析](三)Android源码编译及SDK生成
一、编译源代码1.环境搭建(Ubuntu) (1)安装JDKcd /usrmkdir javacd java## 获取JDK1.7wget http://xxxx/jdk-7u22-linux-i586.binsudo chmod 755 jdk-7u22-linux-i586.binsudo sh jdk-7u22-linux-i586.bin (2)设...原创 2018-08-09 00:51:50 · 1620 阅读 · 0 评论 -
[Android5.0源码透析](二)源代码结构
一、Android5.0源代码总体结构(1)核心工作部分(Core Project):这部分是建立Android系统的基础,被保存在根目录的各个文件夹中。(2)扩展工作部分(External Project):使其他开源项目具有扩展功能,被保存在根目录的"external"文件夹中。(3)包部分(Package):提供Android的应用程序、内容提供者、输入法和服务,被保存在根目录的...原创 2018-08-08 22:26:17 · 376 阅读 · 0 评论 -
[Android5.0源码透析](一)获取Android5.0源码
一、获取环境1.linux系统2.安装了jdk3.安装了curl(未安装可用以下命令安装:sudo apt-get install curl-core)二、安装Repomkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo...原创 2018-08-08 21:37:13 · 694 阅读 · 0 评论 -
Android获取超级管理员权限
1.定义特殊的广播接收者,系统超级管理员的广播接收者public class MyDeviceAdminReceiver extends DeviceAdminReceiver{ @Override public void onReceive(Context context,Intent intent){ //TODO }}2.在AndroidM...原创 2018-08-07 21:30:13 · 4436 阅读 · 0 评论