
Android
SmileToLin
这个作者很懒,什么都没留下…
展开
-
使用约束布局ConstraintLayout完美解决多控件被挤出屏幕的问题
不多说直接上代码<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match原创 2021-10-27 10:57:54 · 1185 阅读 · 0 评论 -
Caused by: android.os.TransactionTooLargeException: data parcel size 1910660 bytes 问题原因与解决
从AActivity跳转BActivity通过intent.putExtra传递数据,结果报android.os.TransactionTooLargeException: data parcel size 551728 bytes错误,意思就是传输的数据过大,传递的是图片地址存储的 List< String >。准备到下个页面做预览功能Caused by: android.os.TransactionTooLargeException: data parcel size 191066原创 2021-10-20 11:38:35 · 1362 阅读 · 0 评论 -
Android 调用系统邮箱
Android应用开发中,很多情况下免不了要调用手机上的邮件类应用,实现邮件发送的功能,这一般是通过调用系统已有的Intent来实现的。直接跳转:private void openMail() { Uri uri = Uri.parse("mailto:" + "xxxx@qq.com"); List<ResolveInfo> packageInfos = getPackageManager().queryIntentActivities(new Intent(Inten.原创 2020-11-20 14:13:13 · 2912 阅读 · 0 评论 -
Android中如何解决输入法键盘和activity页面遮挡的问题
开发中遇到一个问题,默认软键盘弹出时好像是会自动将当前界面往上顶,那我们需要覆盖当前界面而不是顶上去的效果要怎么设置呢?这主要是下面这个属性决定的:不希望遮挡设置activity属性android:windowSoftInputMode="adjustPan"希望动态调整高度android:windowSoftInputMode="adjustResize"详细:通常情况下如果我们在一个输入框输入内容,输入法键盘弹出时,activity自动设置高度,相当于在activity向上滚动了添加了输原创 2020-06-20 13:20:21 · 982 阅读 · 0 评论 -
Windows下Git多账号配置,同一电脑多个ssh-key的管理
这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有一些提到一些基础的操作。 本文以配置github.com账号和git.oschina.net账号来逐步演示在Windows环境下配置Git多账号支持即在同一个电脑上管理多个ssh-key,对git多一分了解。 备注:这篇文章所有执行命令的地方都是在管理员模式下进行,即打开cmd,Git Bash客户端用管理员身份运行程序。1. 生成github.com对应转载 2020-06-13 14:17:42 · 347 阅读 · 0 评论 -
Git-TortoiseGit完整配置流程
每次使用Git的时候都或多或少遇到些问题,为了方便以后少踩一些坑,把自己踩过的坑记录一下,加深对Git使用的理解,所以写下这篇日记记录一下。 本文需要频繁使用cmd,如果使用系统的cmd会稍微有点不便 所以这里先推荐一款Windows平台上面个人觉得比较好用的一款cmd工具ConEmu ConEmu下载地址:http://www.fosshub.com/ConEmu.html1. 安装JDK,Git,TortoiseGit,准备好Android SDK 本文使用版本如...转载 2020-06-13 14:16:14 · 815 阅读 · 1 评论 -
Fragment切换时的生命周期
如果打开自动旋转,横屏和竖屏切换之后,Activity会销毁然后重新创建。这样Fragment会重新创建,导致Fragment内容重叠。解决方案:Activity 添加android:configChanges="orientation|screenSize"Fragment生命周期图a 通过Add hide show方式切换FragmentFragment第一次被显示调用Create,CreateView,Start,Resume等生命周期方法,以后简单的切换...原创 2020-06-08 16:16:47 · 1494 阅读 · 1 评论 -
Flutter 编译报错 Error: The method DioHttpHeaders.add has fewer named arguments than those Context
1.报错问题:最近更新Android Studio 4.0 连同Flutter 一起更新,导致原有项目运行报错:Error: The method 'DioHttpHeaders.add' has fewer named arguments than thoseContext: This is the overridden method ('add'). void add(String name, Object value,...解决方法:打开pubspec.yaml 文件修改 dio .原创 2020-06-03 19:34:43 · 2290 阅读 · 0 评论 -
4.3 服务器上的 Git - 生成 SSH 公钥
生成 SSH 公钥如前所述,许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 这个过程在所有操作系统上都是相似的。 首先,你需要确认自己是否已经拥有密钥。 默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。 进入该目录并列出其中内容,你便可以快速确认自己是否已拥有密钥:$ cd ~/.ssh$ lsauthorized_keys2 id_dsa known_hostsc转载 2020-05-30 00:16:33 · 160 阅读 · 0 评论 -
编译报错 Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
> Task :app:mergeDexDebug FAILEDAGPBI: {"kind":"error","text":"Cannot fit requested classes in a single dex file (# methods: 96574 > 65536)","sources":[{}],"tool":"D8"}com.android.builder.dexing.DexArchiveMergerException: Error while merging dex ar原创 2020-05-29 23:42:36 · 22856 阅读 · 0 评论 -
Android Studio 4.0 发布新功能
Android Studio 4.0 已经发布。此版本亮点包括新的 Motion 编辑器;构建分析器,可用于分析构建速度较慢的原因。同时对 CPU Profiler 用户界面进行了大修,提供更加直观的工作流和简单的线程并行分析。另一方面是改进了 Layout Inspector,现在可以提供应用 UI 的实时数据,调试设备内容更加准确。新的 Motion 编辑器MotionLayout API 扩展了 ConstraintLayout 丰富的功能,可以帮助 Android 开发管理应用的复杂运动和转载 2020-05-29 17:57:39 · 613 阅读 · 0 评论 -
Android 进阶17:Fragment FragmentManager FragmentTransaction 深入理解
日常开发中我们经常使用 Fragment 管理布局,使用起来非常方便,但是在简单的 API 背后隐藏了什么操作,很多人恐怕不了解。如果你回答不出这些问题,那这篇文章可能就对你有些帮助: Fragment FragmentManager FragmentTransaction 的关系和作用 Fragment 如何实现布局的添加替换 嵌套 Fragment 的原理读完...转载 2020-04-10 16:13:12 · 381 阅读 · 0 评论 -
判断DialogFragment是否已经显示
android: how do I check if dialogfragment is showingif(dialogFragment!=null && dialogFragment.getDialog()!=null && dialogFragment.getDialog().isShowing()) { //dialog is ...转载 2020-04-10 16:09:47 · 4429 阅读 · 0 评论 -
GestureDetector源码分析Android8.0
安卓源码给我们提供了GestureDetector来监听手势,点击,长按,双击,滚动,抛等事件;通过解读Gesture类来看看安卓源码是怎样判断各类手势的?搞清楚了这个,我们就可以自定义手势啦,比如一张图片,点击返回,长按保存,单个手指双击 图片放大到2倍或者由放大状态变回原来的大小,两个手指捏 缩小图片,两个手指张开 放大图片等等。先看总结分析:1.看源码之前,我们先来看一些变量。...原创 2019-01-09 16:59:53 · 743 阅读 · 0 评论 -
Android中Parcelable接口用法 和 Serializable实现与Parcelabel实现的区别
1. Parcelable接口Interface for classes whose instances can be written to and restored from a Parcel。 Classes implementing the Parcelable interface must also have a static field called CREATOR, which i...原创 2018-12-14 16:46:01 · 312 阅读 · 0 评论 -
adb查看手机设备型号、品牌、机型等信息
adb查看手机设备型号、品牌、机型等信息以下操作均基于ADB模式。1、查看机型时,可以使用以下命令:$ adb shell getprop ro.product.model2、如果我们忘记具体系统属性的名字,我们可以使用grep进行过滤,比如:$ adb shell getprop | grep product我们过滤product关键字,可以看到很多关于产品的系统属性(品牌...转载 2018-12-14 14:56:35 · 6286 阅读 · 0 评论 -
在Android的Editext的InputFilter过滤器
/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * ...原创 2018-11-28 15:49:55 · 650 阅读 · 0 评论 -
android 获取根布局的方法
最近写了一个需求,点击Dialog确定按钮,在弹出一个提示框或者是一个布局,因为显示的布局不是在Activity中创建,需要获得根布局将需要显示的布局添加上面显示出来,在写的时候遇到一个问题,自己定义的布局怎么都添加到布局里面,查看文档得知获取的根布局问题刚开始这样写 private static View getRootView(context){ return ((ViewGr...原创 2018-04-14 14:59:53 · 9981 阅读 · 0 评论 -
android 7.0 因为Uri.fromFile引起的FileUriExposedException异常
最近又碰到因为android 7.0 引起的兼容问题了。android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_20170125_144112.jpg exposed beyond app through ClipData.Item.getUri() at android.os.StrictMod...原创 2018-04-16 17:02:49 · 907 阅读 · 0 评论 -
android 获取虚拟按键的高度
//获取虚拟按键的高度 public static int getNavigationBarHeight(Context context) { int result = 0; if (hasNavBar(context)) { Resources res = context.getResources(); ...原创 2018-04-12 12:50:44 · 1525 阅读 · 0 评论 -
Android监听蓝牙耳机的按键事件 蓝牙无法响应KeyEvent监听不到
需求:蓝牙耳机的按键事件,暂停/播放 音频/视频 ,无法响应蓝牙KeyEvent的事件此问题是由于中的蓝牙KeyEvent监听不到导致的,可以通过以下方法监听蓝牙按键事件 private MediaSession mSession; //在OnResume中使用createMediaSession()方法create private void createMediaSession...原创 2018-04-19 16:46:17 · 4437 阅读 · 5 评论 -
DRM in Android详解
DRM,英文全称为Digital Rights Management,译为数字版权管理。它是目前业界使用非常广泛的一种数字内容版权保护技术。随着知识产权保护受重视的程度日益提高,快速攻城略地得Android智能手机是如何利用DRM来有效保护数字版权的呢?本文将通过剖析Android中的DRM框架以及相关工作流程来向读者揭示DRM的神秘面纱。一 DRM架构介绍严格来讲,DRM不是一项技术,而是一类...转载 2018-05-01 15:01:18 · 4214 阅读 · 0 评论 -
LeakCanary Android 内存泄漏分析利器 源码编译配置mk文件
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := \ $(call all-java-files-under, src)LOCAL_SRC_FILES += $(call all-java-files-under, src/leakcan...原创 2018-05-19 15:12:43 · 573 阅读 · 0 评论 -
CTS 源码分析(一) --CTS概况
1、什么是CTS? Compatibility Test Suite 兼容性测试套件说白了,就是一套工具。一套软件组成的测试工具。2、哪里有这套工具? http://source.android.com/compatibility/downloads.html 什么?要翻墙?关于这个问题请自己解决,本人不负责推销VPN,不负责解决自己刷路由器翻墙的刷机问题,不负责...转载 2018-07-03 14:08:43 · 917 阅读 · 0 评论 -
系统角度解读Android P新特性
引言2018年3月8日,谷歌发布了Android P的预览版,预计今年的Q3季度发布final release版本,有不少文章从开发者角度介绍了Android P的新特征,初步来看给感觉这次大版本似乎并没有什么改变。接下来,将从系统Treble,System,Framework,Runtime, Security等多方面来解读一下Android P的变化。Treble计划Treble计划是一个非常...转载 2018-07-03 17:44:39 · 663 阅读 · 0 评论 -
解决Eclipse报错显示Unable to build: the file dx.jar was not loaded from the SDK folder
由于最近通过SDK-Manager更新了build-tools,当要用到dx.jar这个包时,自动调用最新build-tools中dx.jar,但是运行android项目时Console却提示: Failed to load C:\Program Files (x86)\Android\android-sdk\build-tools\26.0.0-preview\lib\dx.jarU...原创 2018-07-26 13:43:02 · 1414 阅读 · 1 评论 -
Unknown failure (at android.os.Binder.execTransact(Binder.java:565))Error while Installing APKs
今天手机调试出现这个问题:Unknown failure (at android.os.Binder.execTransact(Binder.java:565))Error while Installing APKs 在运行的时候出现提示大致意思:卸载删除已存在应用程序,是否卸载现有应用程序,点击ok就会出现如下错误 原应用程序也没有卸载,然后自己手动卸载了,并且...原创 2018-08-31 10:12:44 · 796 阅读 · 1 评论 -
解决android6.0打开摄像头权限"Failed to connect to camera service"的问题 ,动态获取权限
android6.0使用camera.open()时需要在onCreate()里面添加如下代码,否则会报错"Failed to connect to camera service":if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permi...原创 2018-10-09 15:39:40 · 2647 阅读 · 0 评论 -
Android中Serializable和Parcelable序列化对象详解
学习内容:1.序列化的目的2.Android中序列化的两种方式3.Parcelable与Serializable的性能比较4.Android中如何使用Parcelable进行序列化操作5.Parcelable的工作原理6.相关实例 1.序列化的目的 (1).永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 (2).通过序列化操作将对象数据在网络...原创 2018-10-22 11:54:52 · 388 阅读 · 0 评论 -
AndroidP 高版本联网失败报错解决java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by
前言:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android No...原创 2018-11-02 10:40:06 · 4760 阅读 · 0 评论 -
android 报错 This Gradle plugin requires a newer IDE able to request IDE model level 3 错误解决方案
android studio 导入项目时报错This Gradle plugin requires a newer IDE able to request IDE model level 3 报错。原因是android studio IDE的版本低于项目开发使用的版本两种解决方法:(一): 升级android studio IDE的版本。(二):在项目的gradle.pro...原创 2018-11-15 15:57:37 · 396 阅读 · 0 评论 -
android 动态设置TextView 按下改变字体颜色不生效
由于公司需求,要设置TextView 按下改变字体颜色,刚开始设置怎么都不生效,mSelectButton.setTextColor( mContext.getResources().getColor( R.color.text_color_pressed) );然后翻了一下源码和文档: 意思是,你传入的color即使是一个selector 最终也只返回一种颜色所以,动态设置textview字体的...原创 2018-04-08 14:55:18 · 2511 阅读 · 0 评论