
Android
文章平均质量分 70
霸道流氓气质
每一个优秀的人,都有一段沉默的时光,(项目合作请留言)是那段时光,不抱怨不诉苦,最后渡过了这段感动自己的日子。
展开
-
Android中WebView加载sdcard中的html时提示:ERR_FILE_NOT_FOUND和ERR_ACCESS_DENIED
场景Android中WebView加载sdcard中的html显示:Android中WebView加载sdcard中的html显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客在实现上面的需求时遇到的两个问题。一个是ERR_FILE_NOT_FOUND一个是ERR_ACCESS_DENIED注:博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_CSDN博客-C#,SpringBoot,架构之路领域博主关注公众号霸道的程..原创 2022-02-13 11:38:12 · 4625 阅读 · 1 评论 -
Android中WebView加载sdcard中的html显示
场景Android中使用WebView加载本地html并支持运行JS代码和支持缩放:Android中使用WebView加载本地html并支持运行JS代码和支持缩放_BADAO_LIUMANG_QIZHI的博客-CSDN博客上面实现webview加载显示html是将其放在安装包内,即代码结构下assets目录下如果html中需要访问的静态资源,比如照片资源需要更换或者照片资源特别多时,对于安装包打包和更换维护都不方便。如果可以将html以及其他资源放在手机所在的sdcard中,会很原创 2022-02-13 10:49:45 · 3633 阅读 · 0 评论 -
Android中使用WebChromeClient显示Openlayers加载本地GeoJson文件显示地图(跨域问题解决)
场景Openlayers中加载GeoJson文件显示地图:Openlayers中加载GeoJson文件显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客上面加载显示GeoJson数据显示是使用的在线json的urlhttps://openlayers.org/data/vector/ecoregions.json如果要在Android中加载显示时,只需要将文件全部复制到assets目录下。具体可以参考如下Android中使用WebView加载本地html并支持运原创 2022-02-12 14:41:17 · 2838 阅读 · 1 评论 -
Android中获取WebView加载的html中console.log输出的内容
场景Android中使用WebView加载本地html并支持运行JS代码和支持缩放:Android中使用WebView加载本地html并支持运行JS代码和支持缩放_BADAO_LIUMANG_QIZHI的博客-CSDN博客使用WebView加载html显示时,在js代码中通过console.log()输出的日志内容,怎样在AndroidStudio中logcat调试时获取到。在上面的方式下可以直接捕获到js中console.log()输出的内容。这是因为设置为ChromeClient原创 2022-01-19 15:22:24 · 8109 阅读 · 0 评论 -
Android中通过自定义签名控件实现手写签名
场景实现手写签名并获取签名照片注:博客:BADAO_LIUMANG_QIZHI的博客_霸道流氓气质_CSDN博客-C#,SpringBoot,架构之路领域博主关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现1、新建空白项目,修改其页面布局2、布局文件activity_main.xml代码<?xml version="1.0"?><LinearLayout xmlns:android="http://schemas.原创 2022-01-19 10:26:55 · 1093 阅读 · 1 评论 -
Android中读取NFC标签卡中的ID
场景APP中读取NFC卡中的标签ID,作为用户的唯一标识进行登录验证。首先需要确保手机支持NFC功能。其次具备一张NFC卡片。读取id就是利用的读卡器模式,当把卡片靠近手机的NFC天线的时候,NFC会识别到卡,然后把卡对象装到intent里面,并发送广播NfcAdapter.ACTION_TECH_DISCOVERED,应用程序接到这个广播之后,通过intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)来获取到卡对象,然后就可以对卡进行读写原创 2021-10-14 14:10:54 · 6261 阅读 · 1 评论 -
Android和JS之间互相调用方法并传递参数
场景Android中使用WebView加载本地html并支持运行JS代码和支持缩放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118637633在上面实现使用加载html显示之后,怎样进行互相调用方法和传递参数。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现Android中调用JS方法首原创 2021-07-11 13:31:26 · 5305 阅读 · 2 评论 -
Android中使用WebView加载本地html并支持运行JS代码和支持缩放
场景Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118635362在上面实现html中显示车载导航效果如下现在要将其封装进APP中,打包成车载导航的APP。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程.原创 2021-07-10 17:07:25 · 7299 阅读 · 0 评论 -
Android Studio一直Download fastutil-x.x.x.jar
场景Android Studio 升级后,新建项目一直卡在Download fastuil-8.4.0.jar原因是被墙挡住了。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现将视图切换为Project,使其能找到并打开build.gradle然后添加Maven仓库maven{ url = "http://maven.aliyun.com/n.原创 2021-07-10 17:03:50 · 4572 阅读 · 3 评论 -
Android中集成Jpush实现推送消息通知与根据别名指定推送附示例代码下载
场景经常会有后台服务向Android推送消息通知的情况。如果在推送需求量不大的情况下可以使用较成熟的极光推送。极光推送官网:https://www.jiguang.cn/极光提供有限制的推送服务注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现在极光官网中找到开发者服务,进入开发者平台然后点击创建应用新建应用时要设置一个包...原创 2021-02-24 12:14:05 · 1425 阅读 · 0 评论 -
Android中使用EventBus事件发布/订阅框架实现事件传递
场景EventBusEventBus是一种用于Android的事件发布-订阅总线。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。官方文档https://greenrobot.org/eventbus/documentation/使用场景在做项目的时候往往需要应用程序内各组件间、组件与后台线程间的通信。比如耗时操作,等耗时操作完成后通过Handler或Broadcast将结果通知给UI,N个Activity之间需原创 2021-01-11 16:46:29 · 754 阅读 · 0 评论 -
Android中连接MQTT服务器实现订阅主题并接收消息推送在通知栏显示(附代码下载)
场景Windows上Mqtt服务器搭建与使用客户端工具MqttBox进行测试:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/112305328SpringBoot整合MQTT服务器实现消息的发送与订阅(推送消息与接收推送):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/112394731在上面实现了将MQTT服务器搭建成功并且在SpringBoot中原创 2021-01-11 13:56:15 · 2769 阅读 · 1 评论 -
Android中连接MQTT服务器实现发布一个消息推送给订阅者(附代码下载)
场景Windows上Mqtt服务器搭建与使用客户端工具MqttBox进行测试:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/112305328SpringBoot整合MQTT服务器实现消息的发送与订阅(推送消息与接收推送):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/112394731在上面实现了将MQTT服务器搭建成功并且在SpringBoot中原创 2021-01-11 09:21:43 · 1448 阅读 · 0 评论 -
Android中使用Notification在通知栏中显示通知
场景App在接收到后台推送的消息后,需要在系统通知栏中显示通知消息,并且点击通知消息跳转到新的页面,并将消息内容传递过去。效果如下注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现首先在主页面添加一个按钮<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android.原创 2021-01-10 14:59:40 · 1195 阅读 · 1 评论 -
Android+Java中使用Aes对称加密的工具类与使用
场景Android+Java中使用RSA加密实现接口调用时的校验功能:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/111467394在以上使用RSA非对称加密时所加密的key是固定的,如果限制只能在Android端和Java端能解密获取到key,在传输时使用密文,可以使用对称加密中的Aes加密。即使用同一个密钥进行加解密。注:博客主页:https://blog.csdn.net/badao_liumang_qizhi原创 2020-12-22 13:43:02 · 864 阅读 · 0 评论 -
Android+Java中使用RSA加密实现接口调用时的校验功能
场景RSA加密RSA算法是一种非对称加密算法,那么何为非对称加密算法呢?一般我们理解上的加密是这样子进行的:原文经过了一把钥匙(密钥)加密后变成了密文,然后将密文传递给接收方,接收方再用这把钥匙(密钥)解开密文。在这个过程中,其实加密和解密使用的是同一把钥匙,这种加密方式称为对称加密。而非对称加密就是和对称加密相对,加密用的钥匙和解密所用的钥匙,并不是同一把钥匙。非对称加密首先会创建两把钥匙,而这两把钥匙是成对的分别称为公钥和私钥。在进行加密时我们使用公钥进行加密,而在解密的时候就必须要使用私钥才能原创 2020-12-21 09:42:06 · 1120 阅读 · 0 评论 -
Android中使用retrofit2进行网络get请求查询数据和post请求上传文件
场景Retrofit2Retrofit 是对 OkHttp 的封装,是主流的网络框架。适用于Android 和 Java 的类型安全的HTTP客户端,由Square提供的。Retrofit是一种HTTP客户端框架,使用它,我们可以完成有关HTTP的工作。Retrofit Github 主页:https://github.com/square/Retrofit注:博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿原创 2020-12-17 11:34:00 · 2642 阅读 · 0 评论 -
AndroidStudio中提示:Didn‘t find class “android.support.v7.widget.RecyclerView“
场景在Android Studio中使用Recycle View时提示:Didn't find class "android.support.v7.widget.RecyclerView"根据运行提示指定的activity对应的layout.xml博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现找到项目下app下build.gradle发现引用了...原创 2020-12-17 09:40:25 · 738 阅读 · 0 评论 -
Android中使用Room时怎样存储带list集合的对象
场景Android中使用Room(ORM关系映射框架)对sqllite数据库进行增删改查:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/110821348上面讲了使用Room对简单的对象进行存取到数据库。但是如果对象中含有list集合属性,形如下面这种@Entitypublic class ChatBean { private String msg; private int code; @N...原创 2020-12-16 10:01:17 · 6321 阅读 · 4 评论 -
Android中在使用Room时提示:Cannot figure out how to save this field into database. You can consider adding a
场景在Android中使用Room进行存储数据库时提示:Cannot figure out how to save this field into database. You can consider adding a type converter for注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现这是因为Room中不支持对象中直接存储集合。下面是要存.原创 2020-12-16 09:40:16 · 5421 阅读 · 0 评论 -
Android中ListView的使用以及使用适配器设置数据源
场景Android中使用Adapter(适配器)给RecycleView设置数据源:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/110926089之前讲过使用适配器给RecycleView进行设置数据源,可能对于新手不是很友好。如果只是想简单的在页面中显示一个对象list的某属性值怎样使用适配器给listView设置数据源。注:博客:https://blog.csdn.net/badao_liumang_qizh原创 2020-12-15 21:12:52 · 1015 阅读 · 0 评论 -
Android中怎样在项目中引入别的项目中正使用的library
场景在某开源项目中引用了外部library,在自己新建的项目中要使用此功能时需要将其library也引入比如这个项目中用到一个library,要在新建的项目中也引用这个library注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现将上面开源项目的library整个目录在磁盘下复制到自己新建项目的根目录下(即跟app同目录下)然后打开自己项目下的s..原创 2020-12-10 16:06:49 · 559 阅读 · 1 评论 -
AndroidStudio中提示:uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in libr
场景在Android Studio中的app下引用了一个外部library,运行时提示:uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现打开app下build.gradle中设置的minSdkVersion为1.原创 2020-12-10 15:35:26 · 11072 阅读 · 0 评论 -
AndroidStudio中提示:Failed to resolve: com.github.CymChad:BaseRecyclerViewAdapterHelper:
场景在Android Studio中通过如下方式dependencies { implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'}引入某github上的依赖时提示:Failed to resolve: com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30博客:https://blog.csdn.net/badao_l...原创 2020-12-10 15:08:03 · 4110 阅读 · 1 评论 -
Android中使用AudioManager实现按键录音并保存以及点击播放功能
场景在Android中怎样实现类似发送语音消息功能前的按键录音并将其显示在RecyclerView上并且能点击录音文件进行播放。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现实现页面布局新建一个项目,实现页面布局如下布局代码:<?xml version="1.0" encoding="utf-8"?><androidx..原创 2020-12-09 16:40:40 · 1467 阅读 · 0 评论 -
Android中设置RecyclerView的每一个item的单项点击事件
场景Android中使用Adapter(适配器)给RecycleView设置数据源:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/110926089在上面的基础上怎样设置RecyclerView的每一项的点击事件。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现找到RecyclerView对应的适原创 2020-12-09 15:36:25 · 728 阅读 · 0 评论 -
Android中使用Adapter(适配器)给RecycleView设置数据源
场景RecyclerViewRecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。因为RecyclerView属于新增的控件,Android将RecyclerView定义在support库里。若要使用RecyclerView,第一步是要在build.gradle中添加对应的依赖库。Adapter适配器顾名思义,就是把一些数据原创 2020-12-09 14:50:03 · 8181 阅读 · 0 评论 -
AndroidStudio中提示:android.content.res.Resources NotFoundException: String resource ID 0x
场景在Android Studio中对TextView调用setText时传入的是Int类型的值,就会提示:android.content.res.Resources NotFoundException: String resource ID 0x博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现将int数据添加一个+""即可mText.setText(mEnti.原创 2020-12-09 11:35:27 · 864 阅读 · 0 评论 -
Android中使用Room(ORM关系映射框架)对sqllite数据库进行增删改查
场景RoomRoom是Google官方提供的数据库ORM框架,使用起来非常方便。Room在SQLite上提供了一个抽象层,以便在利用SQLite的全部功能的同时能更加流畅的访问数据库。Room中三个主要组件:Database:该组件用来创建一个database holder。注解定义实体的列表,类的内容定义从数据库中获取数据的对象(DAO)。它也是底层连接的主要入口。这个被注解的类是一个继承RoomDatabase的抽象类。在运行时,可以通过调用Room.databaseBuilder()原创 2020-12-07 16:25:02 · 1707 阅读 · 0 评论 -
Android中怎样使用Navicat可视化查看sqllite的数据库(查看db文件)
场景Android中在将数据存储到sqllite数据库后,会在手机内部存储空间中生成db数据库文件。怎样通过软件来查看数据库的表以及数据。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现首先手机连接电脑,打开Android Studio 并能成功连接进入调试。在Android Studio 右边Device FIle Explorer中下的data/data/你原创 2020-12-07 14:32:10 · 3517 阅读 · 0 评论 -
Android中怎样在工具类中获取Context对象
场景Android程序中访问资源时需要提供Context,一般来说只有在各种component中(Activity, Provider等等)才能方便的使用api来获取Context对象,如果在编写工具类时需要使用到Context对象可以通过如下方式获取。注:博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现我们可以通过自定义一个Application类来实现。在src/m原创 2020-12-07 14:17:00 · 1298 阅读 · 0 评论 -
AndroidStudio中提示:This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is
场景Android Studio中在新建项目时勾选了Use legacy android.support licrary然后在运行项目时提示:This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推..原创 2020-12-07 13:45:35 · 1422 阅读 · 0 评论 -
AndroidStudio中Attatch debugger to Android Ptocess时 Choose Process后OK是灰色的
场景AndroidStudio中Attatch debugger to Android Ptocess时 Choose Process后OK是灰色的注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现查找原因后发现数据线连接到手机的方式是只充电,将其修改为正在通过USB传输文件此时在查看时就已经不是灰色了并且不再一直在waiting for 界面了。..原创 2020-12-04 10:35:28 · 1909 阅读 · 0 评论 -
AndroidStudio中调试时提示waiting for debugger的奇葩解决
场景在将手机连接到电脑上使用Android Studio进行调试时之前解决过,解决方案如下:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/110127243但是有一次又出现了这个问题怎么都没法解决。博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现并且在Run-Attach Debugger..原创 2020-12-04 10:29:01 · 718 阅读 · 0 评论 -
Android+SpringBoot+Vue实现安装包前台上传,后台管理,移动端检测自动更新
场景安卓app应用更新全流程如下管理员登录后台系统,从浏览器上通过前端将apk以及版本号和更新说明等信息上传到后台。后台提供app版本的管理的上传接口和增删改查的接口以及检测最新版本的接口。app在启动后会首先调用检测最新版本的接口,获得最新版本的相关信息,如果最新版本的版本号大于当前应用的版本号则提示是否更新,点击更新后则会后后台提供的下载接口去下载最新的安装包并安装。注:博客主页:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道原创 2020-12-03 11:47:47 · 2763 阅读 · 2 评论 -
Android中从assets资源中读取图片文件并保存到内部存储器并加载显示在ImageView中
场景Android系统为每个新设计的程序提供了/assets目录,这个目录保存的文件可以打包在程序里。/res和/assets的不同点是,android不为/assets下的文件生成ID。如果使用/assets下的文件,需要指定文件的路径和文件名。assets 可以被看做随应用打包的微型文件系统,支持任意层次的文件目录结构。正因为这点,游戏这种需要加载大量图片和声音资源的应用通常都会使用它。assets目录中的所有文件都会随应用打包。assets类资源放在工程根目录的assets子目录下,它里面保存的是原创 2020-12-02 22:01:58 · 3144 阅读 · 0 评论 -
Android中实现保存和读取文本文件到内部存储器(实现简易的记事本为例)
场景在Android应用中需要将某些文本内容保存到存储器中的txt文件中。在显示时还需要将txt文件的内容读取加载出来。形成一个简单记事本的效果注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现首先新建一个Activity并设计页面布局如上,xml布局代码为<?xml version="1.0" encoding="utf-8"?><L.原创 2020-12-02 21:15:56 · 6115 阅读 · 2 评论 -
AnsroidStudio中提示:Failed to find configured root that contain
场景在配置应用更新时下载完安装包之后进行安装中的提示:Error = Failed to find configured root that contain博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现在配置的file_path.xml中添加如下代码<root-path name="root_path" path="."/>完整file_...原创 2020-12-01 21:48:05 · 430 阅读 · 0 评论 -
AndroidStudio中提示:Couldn‘t find meta-data for provider with authority
场景在配置应用更新时下载完安装包之后进行安装中的提示:Couldn't find meta-data for provider with authority 后面跟你的包名博客:https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现找到AndroidManifest.xml中配置FileProvider的地方 <!--在安卓7.0以上禁止在应用外部公开...原创 2020-12-01 21:41:35 · 4780 阅读 · 0 评论 -
Android中通过SeekBar手动控制ProgressBar与模拟下载自动更新进度条
场景进度条的常用场景:通过SeekBar拖动进而更新ProgressBar进度条,比如调整音量效果等。模拟下载实现自动更新进度条。注:博客:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现手动控制进度条在布局文件xml中添加一个SeekBar与ProgressBar <ProgressBar android:id="@+id/pb_tes...原创 2020-12-01 21:28:34 · 701 阅读 · 0 评论