反射调用android系统级API函数

try {
			Class<?> mClass = Class.forName("com.android.server.wifi.WifiSettingsStore");
			Constructor con=mClass.getDeclaredConstructor(Context.class);
			if(!con.isAccessible()){
				con.setAccessible(true);
			}
			Object store = con.newInstance(this);
			Method[] methods = mClass.getDeclaredMethods();
			Method method = null;
			for(Method m:methods){
				if(m.getName().equalsIgnoreCase("getPersistedScanAlwaysAvailable")){
					method = m;
					break;
				}
			}
			if(!method.isAccessible()){
				method.setAccessible(true);
			}
			Object a = method.invoke(store);
			Log.e("a", a.toString());
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(Exception e){
			e.printStackTrace();
		}

android系统级api中含有大量的类,当然这些底层类都会被public的api链接到,但有时候你可能须要突破系统的限制做一些事情,那这个时候反射就成了利器。

这里不会讲反射意义,给出上面的样例,主要是为了说明。在系统中,凡是存在的类,我们都能够拿到事实上例。

从而调用当中的私有属性(非final)和私有方法,从而越过系统的限制。

时间: 2024-10-15 15:48:54

反射调用android系统级API函数的相关文章

android 系统级 service详解

一.android 系统级 service简要说明 android系统级的服务包含了Android Service 和Native Service . Android Service 也称作 Java Service ,是用JAVA语言编写的,实现在框架层. Native Service 也称作 System Service ,是用C++语言编写的,实现在Runtime层. 对于这两种service来说,两个对等service通讯都是利用binder,只不过一种利用*.aidl,一种利用IInt

利用 Android 系统原生 API 实现分享功能

利用 Android 系统原生 API 实现分享功能 这篇文章提供一个封装好的 Share2 库供大家参考. GitHub 项目地址:Share2 大家知道,要调用 Android 系统内建的分享功能,主要有三步流程: 创建一个 Intent ,指定其 Action 为 Intent.ACTION_SEND,表示要创建一个发送指定内容的隐式意图. 然后指定需要发送的内容和类型,设置分享的文本内容或文件的Uri,以及文件的类型,便于是支持该类型内容的应用打开. 最后向系统发送隐式意图,开启系统分享

Android系统级技巧合集

Android系统级技巧合集(随时更新) #转载请注明来源# 1.高通骁龙系列查看CPU体质等级 CPU体质,即为CPU在工作频率下的电压.同一批次的CPU体质各有不同,体质越高,代表该颗CPU可在更高的频率下稳定工作,且在相同频率下工作时功耗相比同批次体质差的CPU要控制得更好. 以搭载高通骁龙801的小米4(OS:第三方原生Android)为例,可在/sys下的文件中查找到描述该CPU体质的文件. 路径为:/sys/module/clock_krait_8974/parameters/ 在该

android 上的API函数钩子,利用CydiaHook实现

android 上的API函数钩子,利用CydiaHook实现 发布将近一年了,最近发现还是有些人需要的,github上也有些人fork了. 例子代码,发布在github上,地址:https://github.com/zencodex/cydia-android-hook CydiaHook 利用Cydia Substrate SDK 开发,可以HOOK java层或NATIVE层 API接口. 本代码功能 写代码的初衷是因为有个app,需要保存数据到SD卡上,并且app里面有判断SD挂载的状态

调用android系统相机拍照并保存图片

android调用系统相机拍照并保存图片 调用系统相机: //在某个事件中添加如下代码即可,不是说单击事件都不会写啊startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE),1); 解释:其中参数MediaStore.ACTION_IMAGE_CAPTURE是调用系统相机用的,而后面的1则是请求的Activity的标志,用来处理返回结果的 可以理解为:给系统相机的Activity添加一个请求标志,在用onActivity

[LinqPad妙用]-在Net MVC中反射调用LinqPad中的Dump函数

LinqPad有个非常强大的Dump函数.这篇讲解一下如何将Dump函数应用在.Net MVC Web开发中. 先看效果: 一.用.Net Reflector反编译LinqPad.exe,找出Dump函数的定义: 经过反编译发现,Dump函数调用了LINQPad.ObjectGraph.Formatters.XhtmlWriter类中FormatObject函数,把对象转成了Html. 二.反射调用FormatObject函数: 由于FormatObject函数是protect类型,不能直接调用

Android 系统版本&amp;API对照表

最新Android系统版本与API等级对应关系表 数据来源:http://d.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels

Java反射获取Android系统属性值

目录 目录 反射定义 为何需要反射 反射方法Method getDeclaredMethod方法 getMethod方法 参数解释 invoke方法 Android 反射应用 反射定义 "反射"(Reflection)能够让运行于JVM中的程序检测和修改运行时的行为. 为何需要反射 反射带来的好处包括: 在运行时检测对象的类型. 动态构造某个类的对象. 检测类的属性和方法. 任意调用对象的方法. 修改构造函数.方法.属性的可见性. 反射方法Method getDeclaredMetho

调用 android 系统拍照结合 android-crop 裁剪图片

在一个应用中更换用户的头像,一般有拍照和从图库中选择照片两种方法,现在网上也有很多开源的,但是很多都太复杂.而 Android-crop 这个库比较小,代码不复杂,比较适合,但是它没有拍照这个功能,需要我们自己整合进去. 调用系统相机拍照 返回略缩图的拍照 // 调用系统的拍照 private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTU