![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android学习
文章平均质量分 65
旺仔大牛
专注Android、Flutter开发,偶尔涉猎web、后端
展开
-
Flutter配置Android和IOS允许http访问
Android和IOS允许http访问原创 2023-12-27 11:28:11 · 1446 阅读 · 0 评论 -
Flutter本地化(国际化)之App名称
Android和IOS的国际化配置,App名称的国际化、本地化原创 2023-12-21 16:16:42 · 1613 阅读 · 0 评论 -
将AAB(Android App Bundle)转换为APK
Google Play 在2021年8月之后,对于新上架的APP,只接受AAB格式,不再支持上传APK。但是打包后,我们肯定还需要对正式发布的包进行测试,去Google Play上发测试版本非常麻烦。还好Google为我们提供了转换工具。bundletoolbundletool 是一种底层工具,可供 Android Studio、Android Gradle 插件和 Google Play 用于构建 Android App Bundle 文件并将 app bundle 转换为部署到设备的各种 APK。原创 2021-12-31 14:40:07 · 6133 阅读 · 0 评论 -
上架Google Play报错:For new apps, Android App Bundles must be signed with an RSA key.
问题描述从2021年8月起,Google Play上架新的APP必须使用AAB格式,已经上架的APP不受影响。签名也变严格了,如果使用的几年前生成的签名,上传aab安装包后,可能会出现以下问题。For new apps, Android App Bundles must be signed with an RSA key.根据错误提示:aab安装包需要使用RSA key来签名。所以我们使用最新的开发工具(最新的Android Studio版本)创建签名即可。解决方案打开Android Stud原创 2021-12-31 09:45:14 · 1634 阅读 · 0 评论 -
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
默认情况下,Android和Flutter打包出来的Apk都是包含了所有架构的,这样打出来的apk体积相对于单架构的apk有点大。这时,我们就需要分别打出不同的架构包。架构一般来说,x86代表32位CPU,x64(或者叫x86-64)代表64位CPU。在Android中,支持专有cpu架构也是Application Binary Interface(ABI)。Android开发者官网文档中支持的ABI。armeabi-v7a此 ABI 适用于基于 32 位 ARM 的 CPU,2016年之前原创 2021-12-23 16:30:03 · 11337 阅读 · 0 评论 -
Android之FileProvider详解
文章目录简介目的使用创建FileProvider设置共享目录配置pathsfiles-pathcache-pathexternal-pathexternal-files-pathexternal-cache-pathexternal-media-path生成Content Uri文件授权临时权限Uri传入Intent为邮箱app分享附件文件其他分享简介Android 7.0之前,文件的Uri以file:///形式提供给其他app访问。Android 7.0之后,分享文件的Uri发生了变化。为了安全起见原创 2021-09-18 17:39:01 · 31652 阅读 · 0 评论 -
MIUI中无法获取所有短信的坑
没事写了个读取短信的功能,发现获取的短信只有手机联系人的,其他比如验证码、快递等短信无法获取到。在App的权限管理中发现,这是因为MIUI将短信权限分为了普通短信和通知类短信权限,其他app是无法申请通知类短信的权限,而且默认是拒绝这种权限,必须在设置中手动允许权限才行。...原创 2020-10-11 23:56:17 · 2974 阅读 · 2 评论 -
android 复制文本到剪贴板
//获取剪贴版ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);//创建ClipData对象//第一个参数只是一个标记,随便传入。//第二个参数是要复制到剪贴版的内容ClipData clip = ClipData.newPlainText("simple ...原创 2019-02-24 21:49:02 · 4494 阅读 · 0 评论 -
RecyclerView解决数据混乱,禁止复用
场景因为RecyclerView自带ViewHoler,所以会自动复用Item。有时候因为这个会产生一些条目数据错误。最简单的停止复用recyclerView.getRecycledViewPool().setMaxRecycledViews(viewType,0);参数说明setMaxRecycledViews(int viewType,int max);viewType: 值必...原创 2019-02-26 14:16:21 · 17722 阅读 · 10 评论 -
更改drawableLeft、Right、Bottom、Top图片的大小
默认情况下,在xml中为TextView设置drawableLeft、drawableRight、drawableTop、drawableBottom,图片的大小是根据图片的像素自动适配的。有时候这样显示出来的效果跟UI设计师出的图不一致。我们可以在代码中改变图片的大小。//获取DrawableDrawable drawable = getResources().getDrawable(R...原创 2019-03-25 21:09:03 · 1278 阅读 · 0 评论 -
Android将View的内容转换为图片
有时候我们需要将app中某个控制的内容转换为图片保存起来。以下代码可以实现。 /** * View转换为Bitmap图片 * * @param view * @return Bitmap */ public Bitmap convertViewToBitmap(View view) { //创建Bitmap,最后一个参数代表图...原创 2019-03-25 21:25:41 · 1708 阅读 · 2 评论 -
Android 图片转Base64字符串问题
图片上传时,后台接收的方式有好几种,可以直接接收File对象,有时候要求将图片转成Base64编码以字符串的形式传给服务器。这里我们说一下转Base64会遇到的问题。ByteArrayOutputStream bos = new ByteArrayOutputStream();//将bitmap转成字节数组流.boolean compress = bitmap.compress(Bitma...原创 2019-03-25 23:38:07 · 3767 阅读 · 0 评论 -
解决Android WebView不显示Mixed Content的问题
场景在Android中使用WebView加载一些网页时,明明调用了WebView.loadUrl(“xxxxxx”),但是WebView却显示一片空白。下面是我用WebView加载百度首页(https://www.baidu.com)出现的提示。我用小米手机自带的浏览器加载会弹出证书有问题的提示,但是WebView啥也没提示,只有一片空白。2019-03-28 12:06:51.973 22...原创 2019-03-28 22:37:22 · 7292 阅读 · 0 评论 -
解决WebView加载出现白屏,显示X509 java.security.cert.CertPathValidatorException
场景使用WebView加载某一网址时,不能正常显示网页,在Logcat出现以下错误提示。I/X509Util: Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found....原创 2019-03-28 23:15:53 · 2959 阅读 · 0 评论 -
Android音频播放模式切换-外放、听筒、耳机
切换播放模式需要使用AudioManager.默认音频播放使用的是外放(扬声器)。AudioManager audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); 切换到听筒audioManager.setMode(AudioManager.MODE_IN_CALL);audioMana...原创 2019-01-14 18:52:50 · 11312 阅读 · 4 评论 -
解决E/RecyclerView: No layout manager attached; skipping layout
列表在Android中是最常用的展示方式了,以前主要是使用ListView,现在已经被RecyclerView取代了。但是用惯了ListView的同学,在用RecyclerView可能习惯了ListView的使用方式。最常见的错误//数据源List list = new ArrayList();list.add(...);list.add(...);list.add(......原创 2018-08-20 00:24:35 · 16674 阅读 · 13 评论 -
Out of memory on a 11111-byte allocation
在android中加载图片或者一个界面有很大的数据需要处理,经常会出现这种情况。解决方法:打开androidmanifest.xml 在application节点,增加一个属性:largeHeap=”true”。<application android:name=".DemoApplication" android:allowBackup="true" android:ic原创 2016-09-12 15:38:43 · 837 阅读 · 0 评论 -
java.lang.IllegalStateException: Could not find method onClickcrea(View) in a parent or ancestor Con
java.lang.IllegalStateException: Could not find method startChat(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.widget.Button with id 'Button'原创 2016-09-13 14:56:45 · 9556 阅读 · 0 评论 -
AndroidStudio常用设置
常用快捷键ctrl+o 覆写父类方法 ctrl+shift+l 格式化 ctrl+alt+o 删除没有引用的包 ctrl+j 在线模版自动补全。 双击shift 全局查找关闭拼写检查警告 删除module原创 2016-04-26 17:53:24 · 528 阅读 · 0 评论 -
SharePreference封装成工具类
Android开发中经常需要保存一些用户配置信息,一般都会保存在SharePreference当中。但是每次都用getSharedPreferences太麻烦了。我在项目中对SharePreference的频率操作封装在一个类中。在使用时不需要传入Context和key,保存的时候只需要传入值,获取时不需要传入key。/** * SharePreference基类 *原创 2016-10-30 19:56:06 · 4180 阅读 · 1 评论 -
PopupWindow的简单用法
首先创建弹出框的布局layout_popupwindow<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:b原创 2016-11-14 01:27:00 · 309 阅读 · 0 评论 -
自定义顶部导航栏
创建自定义属性在res/values中创建名为attrs的文件。 定义2个属性,分别是左边按钮和右边按钮,值是drawable,所以格式应该为refrence。<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="MyTopBar"> <attr name="leftButto原创 2016-11-20 20:06:38 · 692 阅读 · 0 评论 -
Android创建底部菜单栏
布局使用RadioGroup和RadioButton配合Fragment<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"原创 2016-11-22 03:29:53 · 2888 阅读 · 0 评论 -
Andriod中为Dialog设置动画
因为Dialog不属于View,所以不能使用View.startAnimation()。 看了Dialog的源码发现,Dialog其实是Window实现的。所以我们可以使用Window设置动画的方式来实现。我们这里使用AlertDailog,实现从顶部弹入,隐藏时回到顶部消失。首先定义2个动画xmlanim_in<?xml version="1.0" encoding="utf-8"?><set原创 2016-12-05 00:27:29 · 2516 阅读 · 0 评论 -
Android使用ViewPager做无限轮播,人为滑动时停止
实现无限循环使用取模,获取到当前图片所在的位置。 private class MyPagerAdapter extends PagerAdapter { private Context context; List<ImageView> list; public MyPagerAdapter(Context context, List<ImageVi原创 2016-11-27 22:35:21 · 4133 阅读 · 9 评论 -
自己对Handler和HandlerThread的理解
共同点都是用于多个线程间通信,通知其他线程某些任务已经处理完成。区别Handler主要是子线程通知Android的UI线程(主线程)更新界面。 HandlerThread主要是Android的UI线程(主线程)通知子线程中的handler去做异步任务。示例场景Handler的使用场景 网络请求完成后,通知UI线程刷新界面。public class Main3Activity extends原创 2016-12-17 18:11:16 · 641 阅读 · 0 评论 -
动态切换EditText内容的显示
有时候在注册或登陆界面,产品经理会要求增加一个点击显示密码的功能的。 可以使用Edittext的setInputType(InputType type)方法来实现。示例EditText etPsw = (EditText)findViewById(R.id.xxxxx);//点击切换的图片ImageView ivEye = (ImageView)findViewById(R.id.xxxxx)原创 2017-02-25 01:51:43 · 904 阅读 · 0 评论 -
Android屏幕横竖屏旋转时,禁止Activity重启,不重新走生命周期
默认情况下,Android设备屏幕方向改变时,会重启正在运行的Activity,会依次走onDestroy()、onCreate().如果此时界面运行的是播放音频或者是播放视频,那么旋转后音频或视频状态都会被销毁并重置。还好Android已经想到了这种情况,为我们提供了解决方案。在AndroidManifest清单文件中,在需要的Activity中加入android:configCha...原创 2018-08-03 19:14:03 · 3128 阅读 · 0 评论 -
解决android apk安装后出现2个相同的应用图标
如上图所示,安装完WebRTCDemo后,出现了2个完全一样的应用程序,其中一个为正常的,一个是不可用的。原因这是因为Android程序进行打包编译时,将所有的Manifext文件合并后,发现有多个Activity中存在以下Intent-filter. <activity android:name=".MainActivity"> &...原创 2018-08-10 16:39:36 · 11402 阅读 · 1 评论 -
Appcompat 全屏问题
使用AndroidStudio创建Activity,会自动继承AppcompatActivity。 一般的我们想让XML布局全屏,会在manifest中修改Activity的Theme,设置成notitlebar.fullcreen就可以了。 但是继承AppcompatActivity的Activity使用这种方式全屏会报错。在stackoverflow上找到的解决方法: 自定义样式<styl原创 2016-04-29 16:33:42 · 539 阅读 · 0 评论