Android
文章平均质量分 76
梦之归途
一步一个脚印,踏实前行。
展开
-
Android查看签名信息系列 · 使用逆向分析工具JadxGUI获取签名
通过java反编译工具,可以查看smail代码和java代码,以及签名信息。原创 2023-12-26 18:16:14 · 1828 阅读 · 0 评论 -
使用JDK的 keytool 生成JKS,修改查看JKS信息
它使用户能够管理自己的公钥/私钥对及相关证书,在JDK 1.4以后的版本中都包含了这一工具,所以不用再上网去找keytool的安装,电脑如果安装有JDK1.4及以上,就可以直接使用。-dname "CN=jwt,OU=jtw,O=jwt,L=zurich,S=zurich, C=CH" 名字与姓氏,组织单位,城市,区县,国家代码。注意事项:你的证书是在JDK1.8的环境制作的,但是你却在JDK1.7的环境下去转换格式,是会报故障的,所以JDK的环境也是很重要的。源秘钥口令就是上面设置的-keypass。原创 2023-01-11 20:41:54 · 8910 阅读 · 0 评论 -
Sndroid开发设置Settings
1、配置JDK2、安装 Android Studio (带SDK)3、配置。原创 2022-09-08 08:28:54 · 291 阅读 · 0 评论 -
Android 开发——环境搭建
这一步将“Android Virtual Device”勾选上,这是为了创建Android模拟器,然后“Next”,下图为选择Android Studio的安装目录。接着就会出现下图所示的页面,是由于第一次运行,AS找不到Android SDK让我们设置代理下载,这里选择取消。网络上有的教程会让设置代理,由于当时墙的问题,国内没有镜像,所以才设置的,现在可以不用了。然后下一步,这里如果在安装类型那儿选择的是自定义安装,则会出现下图:让我们设置模拟器的RAM大小。项目设置,然后一直“Next”,进入主界面。原创 2022-09-08 08:24:11 · 1142 阅读 · 0 评论 -
Java环境安装和配置(jre和jdk)
再进行新建,这次配置jre,变量名中输入CLASSPATH,然后在变量值中选择jre的地址,即第七步中提到的地址,然后保存。在变量名中输入JAVA_HOME,然后在变量值中选择jdk的地址,即第四步中提到的地址,然后保存。在系统属性的高级页面之后,点击最下面的环境变量,然后进行进一步的配置。点击用户变量下面的新建,即上面的一个新建,下面一个是系统变量,注意不要选错。安装完之后会显示关闭界面,这时我们点击关闭就行,然后进行最重要的环境配置。配置完用户变量之后,找到下面的系统变量,然后找到PATH,点击编辑。原创 2022-09-07 11:31:19 · 3089 阅读 · 0 评论 -
解决android studio 一直卡在Gradle:Resolve dependencies‘:classpath‘的问题
在今年的Google开发者大会上,Google宣布了Kotlin是Android的主要开发语言了,从此Kotlin有了个亲爸爸android studio 3.0 preview提供了kotlin的支持,2.几的版本也可以通过安装插件来支持kotlin,但是强迫症患者受不了,哈哈哈在第一次使用android studio 3.0时先是下载gradle弄了半天(如果你也卡在这里了,可以参考我的这篇文章),然后下载好了gradle有碰到了新的问题,在项目构建时卡在了Gradle:Resolve depende原创 2020-12-27 17:19:25 · 2738 阅读 · 0 评论 -
Android 迁移到 Androidx
前言最近 Google 发布了 Android support library 28,同时也发布了 androidx 1.0.0 第一个正式版本,然后得知支持库的 "28.0.0" 将会是最后一次更新,之后的更新都会迁移到 Androidx 中,所以没办法,只能把项目依赖也迁移到 Androidx 了。开始迁移迁移步骤 Google 官方有给出流程,首先在 gradle.properties 文件中添加// 表示使用 androidxandroid.useAndroidX=true// 表原创 2020-11-18 09:36:11 · 415 阅读 · 0 评论 -
应用弹窗“此应用专为旧版Android打造,因此可能无法正常运行...”的原因
Android P上,有的应用打开时,会弹出对话框,内容:“此应用专为旧版Android打造,因此可能无法正常运行。请尝试检查更新或与开发者联系”。用户会感到困惑,真正的原因是什么?举例,如下图某应用,版本:6.072.001,下面通过Android P源码,分析原因:应用启动,startActivity时,流程会执行到realStartActivityLocked方法,代码位于ActivityStackSupervisor.javarealStartActivityLoc...原创 2020-05-12 14:33:09 · 17704 阅读 · 0 评论 -
Android中TabLayout添加小红点
# Android中TabLayout添加小红点1.主布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c...原创 2019-10-18 11:52:47 · 1795 阅读 · 1 评论 -
adb、sqlite3操作android数据库
前言:以前没怎么接触过sqlite3命令操作数据库,这也是费了一翻劲的,看他们用命令操作的那叫一个顺畅,自己也要试试,网上资料一堆,简单学了下,记录于此下面一步步记录我的整个访问数据库的过程:第一步:adb devices 命令:查看当前连接的手机;可以看到手机名称出来了,说明我的手机已经连上adb了;然后:adb shell :这个命令是进入shell命令界面,可以使用所有...原创 2019-10-12 15:44:25 · 366 阅读 · 2 评论 -
详解Dialog(一)——基础元素构建
本篇内容比较简单,是最基础篇,包括对话框标题、消息、按钮、内容视图的动态构建和静态构建方法。一、标题、消息、按钮首先我们要认识一个函数:AlertDialog.Builder builder = new AlertDialog.Builder(context); 这个AlertDialog.Builder(context)就是用来构建Dialog各种相关参数的,跟Stri...原创 2019-09-25 14:10:23 · 365 阅读 · 0 评论 -
用户手势检测-GestureDetector使用详解
一、概述当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。一般情况下,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(View v, MotionEvent event)方法,我们可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用户触...原创 2019-09-24 10:35:38 · 1236 阅读 · 2 评论 -
Android Studio 默认keystore 以及自定义keystore
我们使用Android Studio 运行或测试我们的app 它使用一个默认的debug.keystore进行签名。这个默认签名(keystore)是不需要密码的,它的默认位置在$HOME/.android/debug.keystore,如果不存在Android studio会自动创建它。例如我的debug.keystore就在C:\Users\Administrator\.andro...原创 2019-09-03 11:15:37 · 1377 阅读 · 2 评论 -
Android:shape和selector和layer-list的(详细说明)
<shape>和<selector>在Android UI设计中经常用到。比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape>和<selector>。可以这样说,<shape>和<selector>在美化控件中的作用是至关重要。先来看一个例子:通过xml文件实现自定义圆角镂空按...原创 2019-05-07 16:53:33 · 2797 阅读 · 0 评论 -
AndroidStudio一步步教你修改项目包名
如果你看了很多篇博文还是修改不了包名,我相信这篇可以帮你解决修改包名的问题修改项目包名,实现不覆盖安装(如果只是想不覆盖安装,更改build.gradle里面的包名就OK了,那这篇博文到这里就可以结束了,如果希望项目层次的包名也更改的话,请往下看)1.首先新建一个项目,默认结构如下,红色的就是包名2,更改显示项目结构方式,首先1,点击齿轮的图案。然后把第二步......原创 2019-04-23 10:46:11 · 22873 阅读 · 1 评论 -
android studio Design(设计)跳转Text对应XML控件
方法一:Ctrl+鼠标单击;无意中发现的;方法二:鼠标选中Design控件+F3方法三:还有一个小技巧Text跳转Java文件点击左上角的C图标或者 Ctrl+Alt+Home....原创 2019-04-26 16:52:55 · 1281 阅读 · 0 评论 -
Android-网络监听
直接在BaseActivity中引下面代码:private ConnectivityManager.NetworkCallback networkCallback;private ConnectivityManager connectivityManager;//网络监听networkCallback = new NetworkCallbackImpl();NetworkReq...原创 2019-04-09 16:38:39 · 1127 阅读 · 1 评论 -
桌面widget详解(三)——桌面widget中的控件交互方法
这篇我们依然撇开播放器,讲一讲桌面widget中最基本的功能,大家先把最基本的给弄懂了,下篇再来实现播放器的桌面widget,可见实现一个复杂的桌面widget是多么的困难。先看下这篇的实现效果:在widget中实现一个text和两个button,当点击第一个button的时候,text中显示一个随机数。在上一篇中《桌面widget详解(一)——基本demo构建》,我们简单介绍了怎么显...原创 2019-09-26 17:08:38 · 1263 阅读 · 2 评论 -
Android Studio检测内存泄露和性能
内存泄露,是Android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴。怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了。熟悉Android Studio界面工欲善其事,必先利其器。我们接下来...原创 2019-02-20 16:03:26 · 393 阅读 · 0 评论 -
详解Dialog(二)——有关列表的构建
上篇给大家讲了Dialog的基本元素的构建方法,今天给大家说说有关列表对话框的构建。本篇讲的所有列表项都是通过系统自带的函数生成的,对于完全自定义对话框的方法,我们会在最后一篇讲。列表对话框主要有四种:普通列表、单选列表、双选列表、自定义视图的列表,下面我们一个个来分析。一、普通列表普通列表的样式是这样的:要实现这样的列表样式,是通过下面的方法来实现的:buil...原创 2019-09-25 14:54:58 · 507 阅读 · 2 评论 -
详解Dialog(三)——自定义对话框视图及参数传递
一、雏形构建先给大家看下这小节的效果图:自定义一个对话框,内容是四个ImageView横排;1、Dialog布局根据上图的对话框样式,我们看一下Dialog的布局定义(custom_dialog.xml)<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="htt...原创 2019-09-25 16:01:56 · 1761 阅读 · 2 评论 -
HTTP状态码
HTTP状态码(HTTP Status Code) 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 一、1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。代码 说明 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已原创 2017-12-11 17:35:41 · 295 阅读 · 0 评论 -
Android P(版本27以上) 网络请求http限制
前言:最近开了新项目,所以用了最新的android studio 也把gradle和android sdk用了新的版本来开发。但是用网络请求okhttp3请求数据的时候会有失败,查看相关文档找到了原因和解决方案,所以才引出了今天的这篇文章。网络请求失败的错误日志先给出来:java.net.UnknownServiceException: CLEARTEXT communication *...原创 2019-10-10 11:26:45 · 584 阅读 · 0 评论 -
PopUpWindow使用详解(二)——进阶及答疑
上篇为大家基本讲述了有关PopupWindow的基本使用,但还有几个相关函数还没有讲述,我们这篇将着重看看这几个函数的用法并结合源码来讲讲具体原因,最后是有关PopupWindow在使用时的疑问,给大家讲解一下。一、常用函数讲解这段将会给大家讲下下面几个函数的意义及用法,使用上篇那个带背景的例子为基础。public void setTouchable(boolean touch...原创 2019-09-27 17:01:53 · 581 阅读 · 2 评论 -
PopUpWindow使用详解(一)——基本使用
先看一下我们要做的效果:这个效果很容易理解:当点击btn时,在底部弹出PopupWindow,然后点击各个item弹出对应toast。一、概述1、PopupWindow与AlertDialog的区别最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManager参数来改变位置)。而PopupWindow是可以指定...原创 2019-09-27 16:25:48 · 2318 阅读 · 2 评论 -
桌面widget详解(四)——桌面音乐播放器(实战)
先看看本篇的最终效果:一、Service控制播放部分(MusicManageService.java)首先由于我们要与按钮相交互,所以在Service中的交互一般是通过BroadcastReceiver来实现的,所以在MusicManageService的OnCreate函数中(Service起来的时候调用OnCreate)应该包括下面几个步骤:注册Receiver,初始化......原创 2019-09-27 11:41:14 · 1539 阅读 · 0 评论 -
桌面widget详解(二)—— 基本的与service通信
因为我们的widget是没有办法像Activity一样根据ID获取到View对象的,所以根本没有办法在widget代码中直接操作,只能通过Service来间接交互操作(看不懂没关系,下篇会具体讲);如果我一上来就讲如何与Service交互,大家可能一头雾水。因为Service本身就不是个简单的东东。所以我先岔开话题,讲讲我们如何在MainActivity中实现一个音乐播放器的雏形。这篇主要在于理解...原创 2019-09-26 14:55:09 · 899 阅读 · 2 评论 -
桌面widget详解(一)——基本demo构建
一、概述App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget Provider来发布一个Widget。官方文档地址:《App Widgets》这里涉及到两个方面的内容:AppWidgetProvider类和appwidget-provider标签;1、appwid...原创 2019-09-26 11:57:04 · 1341 阅读 · 2 评论 -
动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)
总效果:这里动态生成十个相同的列表,这是最终效果,但凡事都是从易而难的,下面我们就从XML生成一项内容开始讲解。一、利用XML生成一项列表这里先利用XML生成一项列表开始,先看一项列表的效果图及对应代码:对应的XML代码为:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/androi...原创 2019-09-25 16:36:45 · 857 阅读 · 2 评论 -
动态添加控件及将某XML动态加入到Activity显示
一、动态添加控件、设置参数这个难度比较大,放在前面讲,用的也比较多,普通情况下,我们会提前把布局XML写好,然后对XML中的元素进行设置,但这种方法在有些情况下就显得不适合,比较聊天应用,比如帖子的回复情况。针对这些情况,我们要动态根据获取到的数据增加控件或控件组的数量,废话不多说,下面就开整吧,先看个效果图:原始XML ...原创 2019-09-25 16:19:38 · 432 阅读 · 2 评论 -
Android 开源之StickyHeaderListView 标题渐变、吸附悬停、筛选分类、动态头部
StickyHeaderListView 是基于实际需求做出的灵活可定制的UI功能,具体实现功能如下:一、支持无限循环的广告位。二、高度可动态配置的Header2和Header3(使用GridView实现)。三、主要功能:分类、排序和筛选布局滑动到顶部后吸附、悬停。四、自定义FilterView筛选控件,支持动画显示与动画隐藏。五、支持标题栏背景颜色渐变、字体颜色渐变。六、数据不足一屏...原创 2019-02-20 15:53:19 · 578 阅读 · 2 评论 -
Android在线更新那点事儿(适配Android6.0、7.0、8.0)
一、前言app在线更新是一个比较常见需求,新版本发布时,用户进入我们的app,就会弹出更新提示框,第一时间更新新版本app。在线更新分为以下几个步骤: 1, 通过接口获取线上版本号,versionCode 2, 比较线上的versionCode 和本地的versionCode,弹出更新窗口 3, 下载APK文件(文件下载) 4,安装APK在线更新就上面几个步骤,前2步比较简单...原创 2019-02-20 15:32:12 · 1861 阅读 · 1 评论 -
Intent.使用小结
打电话 Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(“tel:12345678”)); startActivity(callIntent);权限拒绝后就不能再拨打电话了,6.0后可以加一个权限管理对于这种危险权限通过一个url跳转到一个网页 @Override pub原创 2017-12-07 10:32:29 · 284 阅读 · 0 评论 -
Intent及其七大属性及intent-filter设置
一、Activity(一)、如何实现Activity页面跳转? 示例代码: //第一种方式: Intent intent = new Intent(MainActivity.this,NextActivity.class); startActivity(intent);//第二种方式: Intent intent = new Intent(); intent.setCl原创 2017-12-07 10:25:54 · 2012 阅读 · 1 评论 -
PendingIntent
PendingIntent1、PendingIntent字面意义:等待的,悬而未决的Intent;Intent一般是用作Activity、Sercvice、BroadcastReceiver之间传递数据,而Pendingintent,一般用在 Notification上,可以理解为延迟执行的intent,PendingIntent是对Intent一个包装;2、得到一个 PendingIntent 对原创 2017-12-07 10:25:03 · 241 阅读 · 1 评论 -
Android.Intent.Action
Intent.Action的作用在讲action之前,我跟大家回忆一个场景。用过Android手机的人应该都知道,比如说我在某个App例如新浪微博中点击拍照,会跳转到照相机的界面。但是当我新装了camer360或之类的第三方照相app的时候在微博中点击照相就会先弹出一个Dialog来让我选择是使用默认camer还是camer360.ok,在讲完刚刚那个场景之后我给大家介绍一下显示intent 与隐式原创 2017-12-07 10:23:31 · 4575 阅读 · 1 评论 -
Intent机制详解
什么是IntentIntent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。 通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。 比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给And原创 2017-12-07 10:21:39 · 1984 阅读 · 0 评论 -
HttpURLConnection上传文件
HttpURLConnection上传文件:(一)、 HttpURLConnection上传文件操作步骤: 1、实例化URL对象。调用URL有参构造方法,参数是一个url地址; 2、调用URL对象的openConnection()方法,创建HttpURLConnection对象; 3、调用HttpURLConnection对象setDoOutput(true)、setD原创 2017-12-13 11:16:57 · 3577 阅读 · 1 评论 -
网络访问之HttpURLConnection
一、网络访问:(一)、网络访问的基本概念和流程: 访问网络的方式分为:基于TCP协议的网络通信;基于HTTP协议的网络访问。前者主要学Socket的用法(之后的课程中会讲到),而后者是网络访问中学习的重点。基于HTTP协议进行网络访问的类主要有:URL、URLConnection、HttpURLConnection、HttpClient这几个类。HttpURLConnection、原创 2017-12-13 11:07:07 · 3855 阅读 · 1 评论 -
HttpClient网络访问
一、HttpClient网络访问:(一)、简介: 1、Apache组织提供了HttpClient项目,可以实现网络访问。在Android中,成功集成了HttpClient,所以在Android中可以直接使用HttpClient访问网络。 2、与HttpURLConnection相比,HttpClient将前者中的输入、输出流操作,统一封装成HttpGet、HttpPost、HttpRequest原创 2017-12-11 17:29:06 · 646 阅读 · 0 评论