前言 这个周末又没有吊事,在家研究了怎样通过进程的注入技术改动广播接收器的优先级.关于这个应用场景是非常多的.并且也非常重要.所以就非常急的去fixed了. Android中的四大组件中有一个广播:Broadcast 关于它的相关知识能够转战:http://blog.csdn.net/jiangwei0910410003/article/details/19150705 我们这里就不做太多解释了,如今来看一下问题: 知识前提 这篇文章和我之前介绍一篇文章: Andrdoid中相应用程序的行为拦截…
前言 这个周末又没有吊事,在家研究了如何通过进程的注入技术修改广播接收器的优先级,关于这个应用场景是很多的,而且也很重要,所以就很急的去fixed了. Android中的四大组件中有一个广播:Broadcast 关于它的相关知识可以转战:http://blog.csdn.net/jiangwei0910410003/article/details/19150705 我们这里就不做太多解释了,现在来看一下问题: 知识前提 这篇文章和我之前介绍一篇文章: Andrdoid中对应用程序的行为拦截实现方…
致谢 感谢看雪论坛中的这位大神,分享了这个技术:http://bbs.pediy.com/showthread.php?t=186054,从这篇文章中学习到了很多内容,如果没有这篇好文章,我在研究的过程中会遇到很多困难,说不定我就放弃了~~在此感谢他. 前言 之前的几篇文章都是在介绍了OC的相关知识,之前的半个月也都是在搞IOS的相关东西,白天上班做Android工作,晚上回家还有弄IOS,感觉真的很伤了.不过OC的知识也学习了差不多了.不过在这段时间遗留了很多Android方面的问题都没有进行…
--------------------------------------广播机制简介--------------------------------------------- Android中的广播机制非常灵活,Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这个程序也只会收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的. Android提供了一套完整的API,允许应用程序自由地发送和接受广播. Android中的广播主要可以分为两种类型,标…
今天没吊事.又去面试了,详细哪家公司就不说了,由于我在之前的blog中注明了那些家公司的名字,结果人家给我私信说我泄露他们的题目.好吧,我错了... 事实上当我们已经在工作的时候.我们能够在空暇的时间去面一面,由于面试有非常多优点的: 第一点:你知道这个公司的详细地址了,以后和朋友说的时候也是有话题的 第二点:这点非常重要.看看其它公司的面试题(如今有的公司还在採用笔试题这个环节.真心无语了.题目全是从网上找的,非常没有意思.所以我仅仅要见到有笔试题的一律pass,个人感觉面到如今,阿里和滴滴还…
Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James对Android接口回调技术的理解(结合前人的知识和自己的实践). 使用一个比喻很形象地说明:客户端有个疑问打电话请教服务端,但服务端无法现场给出解答,相互之间约定:服务端一旦有答案,使用电话的方式反馈给客户端. 以上有三个主体:客户端.服务端和接口(方式). 接口回调的原理框图说明: Demo界面…
了解了android中类载入的前期知识点后,来看看android中DexClassLoader详细的实现     详细载入流程例如以下:     宿主程序会到文件系统比方SD卡中去载入APK[1],然后通过一个叫proxy的Activity去运行apk中的Activity     关于动态载入ap.理论上可用用到DexClassLoad.PathClassLoader.URLClassLoader;      DexClassLoader: 能够载入文件系统上的jar.dex.apk     P…
四大组件都是运行在主线程中 1.前台进程:用户正在交互,相当于Activity执行了onResume方法 2.可见进程:用户失去了焦点,相当于Activity执行了onPause方法 3.服务进程:运行着一个通过startService() 方法启动的service的进程 4.后台进程:运行着一个对用户不可见的activity相当于执行了onStop方法 5.空进程:未运行任何程序组件.运行这些进程的唯一原因是作为一个缓存,缩短下次程序需要重新使用的启动时间.系统经常中止这些进程,这样可以调节程…
依赖注入这个模式(模式已经用烂了,这里再烂一次)是用来给应用的各部分解耦的.使应用开发更加可扩展,更容易维护.通过本文你会学到如何使用Dagger2来处理依赖. 简介 如果以对象需要另外的一个对象才能完成一个完整功能的话,那么这里就存在一个依赖.比如,悟空要用金箍棒才能三打白骨精,要筋斗云才能十万八千里.悟空有对金箍棒和筋斗云的依赖.你可以在悟空对象里初始化金箍棒,也可以用一个工厂方法批量生产金箍棒.使用依赖注入可以无需一个专门的类来初始化这些依赖对象.这样就实现了解耦. 本教程会使用最新的Da…
比较简单的有下面这两种 调试端口检测, 23946(0x5D8A) Demo: void CheckPort23946ByTcp() { FILE* pfile=NULL; char buf[0x1000]={0}; // 执行命令 char* strCatTcp= "cat /proc/net/tcp |grep :5D8A"; //char* strNetstat="netstat |grep :23946"; pfile=popen(strCatTcp,&qu…
这几年针对Android推出了不少View注入框架,例如ButterKnife.我们首先来了解一下使用这些框架有什么好处,其实好处很明显:它可以减少大量的findViewById以及setOnClickListener代码,简化了代码,让我们的代码看起来条理更清晰,可读性变强. 可能大多数对于这一类框架,都只是停留在用的阶段,但是作为一个程序员,我们有必要去了解它是如何实现的.其实它的原理也没有多复杂,用到了java中反射和注解的相关知识,所以对反射和注解了解不多的朋友可以先找一下相关资料了解一…
一.前言 从这篇文章开始我们开始我们的破解之路,之前的几篇文章中我们是如何讲解怎么加固我们的Apk,防止被别人破解,那么现在我们要开始破解我们的Apk,针对于之前的加密方式采用相对应的破解技术,Android中的破解其实大体上可以分为静态分析和动态分析,对于这两种方式又可以细分为Java层(smail和dex)和native层(so).所以我们今天主要来讲解如何通过静态分析来破解我们的apk,这篇文章我们会通过破解Java层和native层的例子来讲解. 二.准备工作 在开始今天的文章之前,我们…
一.前言 从这篇文章开始我们开始我们的破解之路,之前的几篇文章中我们是如何讲解怎么加固我们的Apk,防止被别人破解,那么现在我们要开始破解我们的Apk,针对于之前的加密方式采用相对应的破解技术,Android中的破解其实大体上可以分为静态分析和动态分析,对于这两种方式又可以细分为Java层(smail和dex)和native层(so).所以我们今天主要来讲解如何通过静态分析来破解我们的apk,这篇文章我们会通过破解Java层和native层的例子来讲解. 二.准备工作 在开始今天的文章之前,我们…
PS: handler的目的是在组件进程中开辟一个线程作为消息的poller,收到消息后可以更新Activity中的控件(特殊的view) 任务.进程和线程     关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来,就难免会需要关心进程.线程这样的概念.在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的. Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东…
相信有不少人和我一样曾经尝试过在同一个项目中的两个activity进行广播,发现怎么都实现不了.我也是困惑了好久才发现,这么搞本来就是不行的.首先在同一个项目下不同的activity之间广播没有意义,因为就像是在同一个app的不同界面进行传递,你在当前的界面给没有创建的界面或者挂起在后台的界面发广播有什么用,你在当前的界面也看不到没有创建的界面或者挂起在后台的界面接收广播后的结果啊.最常见的还是接收系统变化的广播比如没电了之类的,或者是其他的app的广播.而且就实现而言也是很难实现的,你在mai…
本节内容主要是讲解ActivityManager的使用,通过ActivityManager我们可以获得系统里正在运行的activities,包括 进程(Process)等.应用程序/包.服务(Service).任务(Task)信息. 计划如下:  第一部分:获取系统可用内存以及所有的正在运行的进程信息 ;                   第二部分:获取每个进程里运行的应用程序信息和所有正在运行的应用程序                   第三部分:获取正在运行的服务和任务信息. 每部分都准…
今天看公司的一段关于MediaButtonReceiver的代码看的比较混乱,幸好看了下面的这篇文章,才能茅塞顿开的理解好代码.在此转载下来,以备以后理解,希望都到这篇文章的人也能够有所帮助. 本文转载于:http://blog.csdn.net/qinjuning/article/details/6938436 在Android中并没有定义MediaButtonReceive这个广播类,MediaButtonReceive只是作为一种通俗的命名方式来响应 插入耳机后,点击耳机上的按钮(名称:M…
本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳android.content.ContextWrapper  ↳android.app.Service Service是应用程序Application的一个组件(component).它的作用有两点:1.用来提供一个长期在后台运行并且不与用户交互的操作,2.也可以为其他应用程序提供服务.Service…
本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳android.content.ContextWrapper  ↳android.app.Service Service是应用程序Application的一个组件(component).它的作用有两点:1.用来提供一个长期在后台运行并且不与用户交互的操作,2.也可以为其他应用程序提供服务.Service…
1,去JPush官网注册一个账号,创建你的app的应用,并且拿到你应用的AppKey 2,在JPush官网下载对应的sdk,解压出来,将libs文件下的所有的文件全部复制到你工程的libs文件中 3,在清单文件中添加对应的权限和activity(更改对应的包名和对应的AppKey) AndroidManifest.xml权限配置: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:andr…
在Android中的每个应用程序可以对自己感兴趣的广播进行注册,这样该程序就只会接收自己所关心的广播内容,这些广播可能来自于系统的,也可能来自于其他应用程序的.Android提供了一整套完整的API,允许应用程序自由地发送和接收广播.发送广播就是借助之前了解过的Intent,接收广播则需要用到广播接收器(Broadcast Receiver).. 1.广播的类型 标准广播:Normal broadcast,是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播…
前 面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制,因此,使用这种消息驱动模型的第一步便是订阅消息:而对 Android应用程序来说,订阅消息其实就是注册广播接收器,本文将探讨Android应用程序是如何注册广播接收器以及把广播接收器注册到哪里去的. 在Android的广播机制中,ActivityManagerService扮演着广播中心的角色,负责系统中所有广播的注册和发布操作,因 此,Android应用程序注册广播接收器的过程就把是广播接收器注册到Activ…
前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/公布机制,因此,使用这样的消息驱动模型的第一步便是订阅消息:而对Android应用程序来说,订阅消息事实上就是注冊广播接收器,本文将探讨Android应用程序是怎样注冊广播接收器以及把广播接收器注冊到哪里去的. 在Android的广播机制中,ActivityManagerService扮演着广播中心的角色,负责系统中全部广播的注冊和公布操作,因此,Android应用程序注冊广播接收器的过程就把是广播接收器注冊到Activi…
Android中几种最简单但是却最通用的数据持久化技术:SharedPreference.实例状态Bundle和本地文件. Android的非确定性Activity和应用程序生存期使在会话间保留UI状态和应用程序数据变得尤其重要,因为在回到前台前,应用程序进程可能回被终止并重新启动.Android提供了一些可选方法用于保存应用程序数据,每一种都为满足一个特定需要而进行优化. Android中的数据持久化技术为平衡速度.效率和健壮性提供了选项. 1. Shared Preference:当存储UI…
Web后端开发者应该对依赖注入都比较熟悉,至于Android又是如何进行依赖注入的呢?在这篇文章中,让我们一起通过一个例子了解一下在Android中进行依赖注入的好处. AndroidAnnotations AndroidAnnotations是一个致力于加快应用开发速度的Android端开源框架,它关注纵向开发,让开发者把注意义集中在真正重要的事情上.AndroidAnnotations让你的代码变得简单,便于维护. 我们始终应该相信,一个极客应该选择更简单的解决方式,Robert C. Ma…
静态变量的生命周期,起始于类的加载,终止于类的释放.什么时候类会加载呢?我们知道,在app打开时,会创建一个进程,然后初始化一个dvm的实例,负责类的加载释放 和 垃圾回收等.换句话说,在进程创建之后,就会加载类,静态变量诞生了.那何时释放?当然是在类卸载的时候.同上面.在进程结束之前,静态变量就寿终正寝.我们知道,Android中,你是不知道何时进程会被Kill.所以1.不能保证静态变量会一直存在.(进程可能被Kill掉)2.每次打开app时静态变量的值都是初始值(进程没有被kill掉所以静态…
第一.摘要 今天不是周末,但是我已经放假了,所以就开始我们的技术探索之旅,今天我们来讲一下Android中最期待的技术,就是拦截Activity的启动,其实我在去年的时候,就像实现这个技术了,但是因为知识不充足,就放弃了,当时的需求很简单,就是实现应用锁,就是给每个应用打开的时候加上密码,不了解的同学,可以看看这篇文章: http://blog.csdn.net/jiangwei0910410003/article/details/42149975 不过,当时也是实现了,只是使用了监听TopAc…
BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播通知信息,并做出相应处理的组件.非常多广播是源自于系统代码的──比方,通知时区改变.电池电量低.拍摄了一张照片或者用户改变了语言选项.应用程序也能够进行广播──比方说,通知其他应用程序一些数据下载完毕并处于可用状态. ②应用程序能够拥有随意数量的广播接收器以对全部它感兴趣的通知信息予以响应.全部的接…
BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播通知信息,并做出相应处理的组件.非常多广播是源自于系统代码的──比方,通知时区改变.电池电量低.拍摄了一张照片或者用户改变了语言选项.应用程序也能够进行广播──比方说,通知其他应用程序一些数据下载完毕并处于可用状态. ②应用程序能够拥有随意数量的广播接收器以对全部它感兴趣的通知信息予以响应.全部的接…
Android中向webview注入js代码可以通过webview.loadUrl("javascript:xxx")来实现,然后就会执行javascript后面的代码. 但是当需要注入一整个js文件的时候,貌似就有点麻烦了.不过理清以下思路,方法其实也很简单,如下:我们通过在webview的onPageFinished方法中执行js代码注入: 第一种: 当webview加载完之后,读取整个js文件中的内容,然后将整个文件内容以字符串的形式,通过webview.loadUrl(&quo…