- 博客(968)
- 资源 (47)
- 收藏
- 关注
原创 Android之Notification和Remoteview
Notification是通过建造者模式来创建。为了兼容低版本,v4 Support Library中提供了NotificationCompat.Builder()这个替代方法。它与原来的Notification.Builder()类似,二者没有太大区别。 通知基本用法先来一段代码demo:NotificationCompat.Builder builder = new Notif...
2019-01-03 17:00:11 2515 1
原创 Android之AlarmManager
虽然Timer、Handler.postDelayed、Thread.sleep方法也可以实现定时任务,但当系统处于休眠状态时,这些定时任务所在进程会被暂停,甚至app被进行垃圾回收,这就意味定时任务将失效。AlarmManager可以帮忙解决这一问题。AlarmManager(定时管理器)作用:定时唤醒系统(即使休眠状态下)执行任务,相比上述方法,更加节省电池耗电量。先来一个demo,学习A...
2019-01-03 11:47:33 849
原创 Android之android exported="false"作用
android:exported 是Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性。主要作用是:是否支持其它应用调用。 在漏洞检测中,我们可能会遇到以下提示: 程序A如果不想被其他的程序调用自己的activity,service,或者是receiver的时候,只要在AndroidManifest....
2018-12-29 17:30:04 17011
转载 事务四大特性理解,什么是脏数据、脏读、不可重复读、幻觉读
什么是事务?事务指的是逻辑上的一组操作,这组操作要么全部发生,要么全部失败。举例 : 张三和李四 进行 转账的操作 张三向转账李四 1000元 张三余额-1000元 李四余额+1000元不应该出现的是 在转账过程中由于一些意外,使张三的余额减去了1000元, 而李四并没有收到这笔钱。 使用事务来进行管理。 必须一起成功或者一起失败事务四大特性(ACID)原子性:...
2018-12-28 18:10:36 4988
原创 Android之Service设置android:process作用
在AndroidManifest.xml中定义service时会看到这样的代码android:process=”:remote”,例如:<service android:name="com.test.hello.DaemonService" android:enabled="true" android:exported="false" android:p...
2018-12-28 17:40:06 17275
转载 Android之Intent的setClass、setClassName、setComponent的区别
setClass:跳转到与该工程下的(同一个Application中的)activity或者servicesetClassName:跳转到不同Applicaiton的activity或者servicesetComponent:setClassName内部也是调用的setComponent。setClassName和 setComponentName 区别打开外部应用:intent....
2018-12-28 11:20:00 8716
原创 XML转化为json工具类
用法如下:String xmlStr = "xxxxxxxx";JSONObject jSONObject = new XmlToJson.Builder(xmlStr).build().toJson();String msg = jSONObject.getJSONObject("msg")Utils.print(msg); Xml转换json源码:import and...
2018-12-27 16:48:09 2469
原创 Mac之解决证书不受信任问题
安装别人发过来的证书,提示证书不受信任 解决方法:在上图双击证书,弹出以下页面 选择总是信任,输入管理员密码,最后大功告成!
2018-12-27 10:24:22 64634 3
转载 Mac之忘记管理员名和密码
如果你的电脑,在不小心的时候,把你的管理员账号变成普通用户或者删除了,那么该怎么办?没关系,可以通过命令行来解决,步骤如下:1、开机, 启动时按command+s进入单一用户模式(Single user model)。 2、在#root>下逐步输入以下命令,注意空格和大小写:/sbin/mount -uawrm /var/db/.applesetupdonereboot3...
2018-12-17 17:12:50 5486
原创 Android之重新签名APK
Android逆向开发中,要对原来apk重新签名,可以使用以下方法:1、修改、替换 修改 apk 后缀为 zip 解压缩 .zip 文件 修改你想替换的内容 移除META_INF文件夹(重要1) 选中全部文件,右键压缩得到,切记不要直接压缩外部文件夹(重要2) 得到Archive.zip,重新修改为xxxxx.apk 2、开始签名复制keystore文...
2018-12-16 23:59:21 1228
原创 Android之NDK开发错误 error: unknown type name 'JNIEXPORT'
执行ndk-build命令报错:error: unknown type name 'JNIEXPORT' JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { ^ 解决方法:在cpp文件中引入头文件 #include <jni.h> // 先到标准函数库中找文件,找不到再到缺省目录寻找...
2018-12-16 22:55:54 3274
转载 Android之Apk加壳
基于ADT环境开发的的实现,请参考: Android中的Apk的加固(加壳)原理解析和实现 类加载和dex文件相关的内容,如:Android动态加载Dex机制解析 一、什么是加壳?加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。是应用加固的一种手法对原始二进制原文进行加密/隐藏/混淆。壳最本质的功能就是实现加载器。未加...
2018-12-11 16:12:58 6415
原创 Android之Material Design
什么是Material Design?中文:材料设计。它是2014年谷歌为了解决碎片化,统一不同产品存在的不同UI风格而设计了一套扁平化、简约风格的UI控件,类似的其他厂商设计还有:苹果、微软(Mego)等 如何使用Material Design?添加兼容函数库的依赖,如compile 'com.android.support:design:23.2.0' 添加V7包(可能)...
2018-12-09 23:25:53 323
转载 浅谈CSRF攻击方式
一.CSRF是什么? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。二.CSRF可以做什么? 你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚...
2018-12-09 21:29:14 187
转载 Android之监听View的两个指头是放大和缩小
我们有时需要对view进行手势监听,通过两个手指开始距离和结束距离,来判断放大缩小,下面是实现代码,所有View通用。private double nLenStart = 0;//监听 WebView所用手势@Override public boolean onTouch(View v, MotionEvent event) { ...
2018-12-09 21:10:19 1853
转载 Android之StrictMode
StrictMode简介StrictMode(android.os.StrictMode) 是一个自Android 2.3版(API 9。Gingerbread,姜饼)引入的类。StrictMode是Strict和Mode的合并,在英语中,strict表示“严格的”,mode表示“模式”,因此,StrictMode就是“严格的模式”,或叫“严苛模式”。StrictMode,严苛模式。在...
2018-12-09 20:37:46 581
原创 Android Studio之Gradle和Gradle插件的区别
什么是Gradle?什么是Gradle插件?Gradle 对应:gradle-wrapper.properties中的distributionUrl=https/://services.gradle.org/distributions/gradle-2.10-all.zipGradle插件 对应:build.gradle中依赖的classpath 'com.android.t...
2018-12-07 10:40:53 2219 4
原创 AndroidStudio升级报错Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve c
近日升级AS到3.2.1版本,新建工程时报错: Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:28.0.0.Open FileShow DetailsUnable to resolve depende...
2018-12-06 16:52:29 62949 5
转载 Android之四大组件BroadcastReceiver
广播接收器用于响应来自其他应用程序或者系统的广播消息。这些消息有时被称为事件或者意图(Intent)。它使用了观察者模式:基于消息的发布 / 订阅事件模型一、概述broadcastReceiver 顾名思义,广播接收者,他是用来接收来自系统和应用中的广播。在android系统中,广播体现在方方面面,例如开机完成后,系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;...
2018-12-05 15:48:05 465
原创 Android之Intent显示和隐式调用
显式Intent:显式意图明确指定了要激活的组件是哪个组件,一般是在应用程序内部使用。 如:Intent.setComponent()、Intent.setClassName()或Intent.setClass()方法或者在new Intent(A.this,B.class)指明需要转向到的Activity, 效率高,但耦合度也高隐式Intent:通过在清单文件中配置IntentFi...
2018-12-05 11:30:52 3422
原创 Android之Handler
一、基础知识:Android 的线程分两种:主线程(又称:UI线程)和子线程(又称工作线程,即普通的new Thread)。 主线程由应用程序启动时自动创建,用户使用app进行界面交互、获取操作结果,就是基于UI线程。如:activity跳转、设置TextView文本、showToast等。而子线程则通过new Thread创建。 UI线程执行代码效率越高,界面响应越快,用户感觉就越流畅。...
2018-12-04 17:00:12 306
原创 同步、异步、阻塞、非阻塞的区别
在进行网络编程时,我们常常见到同步、异步、阻塞、非阻塞四种调用方式:同步(Sync)、异步(Async):涉及到IO通知机制;同步:发起调用后,被调用者处理消息,必须等处理完才直接返回结果,没处理完之前是不返回的,调用者主动等待结果;异步:发起调用后,被调用者直接返回,但是并没有返回结果,等处理完消息后,通过状态、通知或者回调函数来通知调用者,调用者被动接收结果。阻塞(Block)、非阻塞...
2018-12-03 17:25:59 294
转载 Android之四大组件
应用程序组件是一个Android应用程序的基本构建块。这些组件由应用清单文件松耦合的组织。AndroidManifest.xml描述了应用程序的每个组件,以及他们如何交互。Android中称为四大组件的为别为:Activity、Service、BroadCast Recevicer、Content providerActivity:activity是用户和应用程序交互的窗口,一个acti...
2018-12-03 11:21:09 407
原创 Android之系统架构
Android架构android应用开发框架由4部分组成,分别是:Linux Kernel:Linux内核与驱动 Libraries 和 Android Runtime:C/C++本地库、Android运行时环境 Application Framework:Java应用程序框架 Applications:Java应用程序更新:新增了 HAL层A...
2018-12-03 10:57:48 877
转载 Android之drawable和mipmap目录区别
在android studio中我们创建项目后,在资源res文件中有drawable和mipmap两种存放图片的文件夹,在使用哪一个文件夹来存放图片,一直都很有争议:android 在 API level 17 加入了 mipmap 技术,对 bitmap 图片的渲染支持 mipmap 技术,来提高渲染的速度和质量。mipmap 是一种很早就有的技术了(纹理映射技术),android 中的 ...
2018-11-30 16:36:17 2613
转载 AndroidKiller反编译失败的处理方法
1、Exception in thread “main” java.lang.ClassCastException反编译核心都是apktool,出现以上报错可能是你反编译的apk编写的版本比较高,我们只需要简单把apktool版本替换到最高 apktool官网下载a)下载最新版本apktool到本地b)替换apktool c)检查版本号b)检查 2. Cou...
2018-11-29 11:46:13 5999 1
原创 苹果MacOS之显示隐藏文件及Terminal 无法保存历史记录问题
在 Terminal 输入:// 显示所有文件,强制退出Finderdefaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder// 隐藏所有文件,强制退出Finderdefaults write com.apple.finder AppleShowAllFiles -boolean fa...
2018-11-29 11:05:51 871
原创 什么是AOP编程?
AOP是OOP的延续,是Aspect Oriented Programming的缩写,直译意思:面向方面编程、面向切面编程。AOP通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。可以在代码阶段实现分离关注,实现松耦合,然后在运行时将相关动作特征植入运行,从而改变程序的运行顺序,达到拦截或者增加功能的目的。常见框架:VirtualXposed ...
2018-11-27 11:31:51 4386 1
转载 Webview之常用App跳转URL Schemes整理
关于URL Schemes的概念以及使用我就不在这里细说了,本文只作常用URL Schemes整理。URL Schemes可配合Magic Launcher Pro使用,当然也可搭配Workflow、Pin、Lcp等工具使用。打开微信:weixin:// 微信扫一扫:weixin://scanqrcode打开支付宝:alipay:// 支付宝扫一扫:alipayqr://platf...
2018-11-26 17:16:13 9570
转载 Android之获取手机UDID
最近做的一个项目中需要用到Android设备唯一码(UUID)来标识一台设备,Android中设备唯一码有很多,如:MAC地址、IMEI号(DeviceId)、IMSI号、ANDROID_ID、序列号(SerialNumber)等,但并不是所有设备上都能稳定获取到这些值。最后项目中采用的是MAC地址。先总结一些搜索得知的各种值的缺点,再说说最后采用MAC地址的解决方案吧。 1.MAC...
2018-11-21 17:53:22 16844
转载 Android之无法回调onActivityResult
onActivityResult不能收到setResult(RESULT_OK, intent);的回调。错误原因:Android 5.0以下系统,若AndroidMainfest.xml中的Activity设置了android:launchMode="singleTask",会产生该错误。5.0以上运行正常。Activity有四种启动模式,不同的模式下onActivityResult的调用...
2018-11-21 17:28:28 1243
原创 Android之string.valueOf妙用
对比以下两个例子:例子1:String key = null;String aa = new StringBuilder(key).append("balance").toString();System.out.println(aa); // 空指针异常例子2:String key = null;String aa = new StringBuilder(String.valueOf(k...
2018-11-19 16:19:47 1663
转载 Java之ArrayList去除重复元素(包括字符串和自定义对象)
1.去除重复字符串package com.online.msym;import java.util.ArrayList;import java.util.Iterator;@SuppressWarnings({ "rawtypes", "unchecked" })public class Demo1_ArrayList { public static void main(St...
2018-11-16 00:18:48 736
转载 你真的了解HTTP中GET与POST的区别吗?
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标准答案”:GET在浏览器回退时是无害的,而POST会再次提交请求。GET产生的URL地址可以被Bookmark,而POST不可以。GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求只能进行u...
2018-11-15 23:15:48 224
转载 Android 7.0新特性——桌面长按图标出现快捷方式
简介Android 7.0版本有一个新特性:如果app支持,可以通过长按app图标出现一些快捷操作。一些热门应用举例: 实现也比较简单,有两种实现方式:静态配置和动态配置。一、静态配置只需要两步: 1. 创建shortcuts.xml配置资源文件; 2. 在Manifest中添加meta-data配置。1.1 创建shortcuts.xml配置资源文件...
2018-11-15 15:22:30 6857
转载 Android之利用NanoHttpd搭建服务器
NanoHttpd是一个开源库,使用Java实现,可以在非常方便地集成到Android应用中去,实现了一个轻量级的 Web Server。项目地址: https://github.com/NanoHttpd/nanohttpd使用方法:在下面下载链接中下载nanohttpd-2.2.0.jar导入到Android项目中的libs目录下。https://github.com/NanoHt...
2018-11-15 15:00:33 4722
原创 Java之InetSocketAddress和SocketAddress的区别
两者区别:SocketAddress是一个抽象类,而InetSocketAddress 是SocketAddress的子类。示例:InetAddress address = InetAddress.getLocalHost();String hostName = address.getHostName();String hostAddr = address.getHostAd...
2018-11-15 14:46:26 6838
原创 Android之Mina框架学习
什么是Mina? Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的...
2018-11-15 00:10:39 369
转载 Java之.class和.getClass()的区别
class属性当你要获得一个类的Class对象时(作函数参数的时候),你不能调用getClass方法,那你只能用类名.class来达到效果例子:System.out.println(JButton.class); 输出:class javax.swing.JButtongetClass方法:该方法只能由类的实例变量调用类型:public final Class<? extend...
2018-11-14 11:25:00 3755
转载 Java之并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来...
2018-11-14 10:59:20 177
Android利用C++实现RSA-DES-AES-BASE64-MD5
2018-11-05
预付卡共享模式与风险分析
2018-02-07
仿iOS带3D效果的滚轮
2017-12-08
iOS高仿微信源码
2017-06-21
代码注释导致sourcetree无法识别
2016-11-22
Android之通过AIDL机制实现进程间的通讯实例
2016-10-08
GSON封装各种类型JSON数据
2016-09-08
iOS之RSA加密并实现解密
2015-04-28
磁盘格式NTFS互转FAT32工具绿色免费版
2013-09-08
Android反编译工具
2013-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人