`
hyshucom
  • 浏览: 808452 次
文章分类
社区版块
存档分类
最新评论

用反射来调用android中的隐藏类

 
阅读更多
主要是利用java 中java.lang.Object下的Method类

Method提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。

Method允许在匹配要调用的实参与基础方法的形参时进行扩展转换;但如果要进行收缩转换,则会抛出IllegalArgumentException。

http://www.cjsdn.net/Doc/JDK50/
//

例如:该function 需要 “Queries the framework about whether any physical keys exist on the
any keyboard attached to the device that are capable of producing the given array of key codes.“
public static boolean[] deviceHasKeys(int[] keyCodes) {
boolean[] ret = new boolean[keyCodes.length];
IWindowManager wm = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
try {
wm.hasKeys(keyCodes, ret);
} catch (RemoteException e) {
// no fallback; just return the empty array
}
return ret;
}

其中 IWindowManager ServiceManageer均为隐藏类,

要想这样用,有两个方法:

1是修改framwork 让其不为hide class 从而可以使用

2是使用java的映射机制。

下面是使用映射后,对应的代码:

public static boolean[] deviceHasKeys(int[] keyCodes) {
boolean[] ret = new boolean[keyCodes.length];
Method method;
String methodName = "hasKeys";//haskey 为隐藏类的隐藏method
try {
method = Class.forName("android.view.IWindowManager.Stub").getMethod(methodName, String.class);
try {
method.invoke(Class.forName("android.view.IWindowManager.Stub"),keyCodes,ret);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ret;

}



分享到:
评论

相关推荐

    利用java反射调用Android隐藏Api

    利用java的反射原理来调用 Android隐藏api 应用开发必备哦 详细描述: http://blog.csdn.net/y_haiyang/article/details/9924925 ====================关注小鱼=================== 新浪微博:...

    Java反射以及在Android中的特殊应用

    这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制,这几句解释说明了反射的作用,动态的跟类进行交互,比如获取隐藏属性,修改属性,获取对象,创建对象或者方法等等,总之就一句话:反射是一种...

    StorageList 通过反射获取存储器列表

    通过反射,调用StorageManager的隐藏接口,getVolumePaths,获取存储器列表。

    最新andriod发送中文短信方法

     但是在andriod1.6之后,SubmitPdu 类被隐藏掉了,方法直接被废掉了;  不过还是有办法的,一个是利用反射机制,但是麻烦,没有深入研究;  有句话经典:上帝总是把门关上的同时,把窗户打开。  既然没有现成的...

    Android实现手机游戏隐藏虚拟按键

    手机游戏实现Android隐藏虚拟按键,供大家参考,具体内容如下 在华为等型号的手机会有虚拟按键,在进入游戏的时候,需要全屏隐藏这个按键,并在下拉状态栏的时候,会重新呼出虚拟按键。 游戏的加载过程中,初始化...

    poi-3.17-jemen.jar

    想到的最简单的方案自然是自己实现一个CellStyle接口,于是乎各种反射调用各种被隐藏的方法及创建对象。结果发现,apache那个坑,setCellStyle(CellStyle style)又调用了HSSFCell的setCellStyle(HSSFCellStyle style...

    阴影:零反射全动态Android插件框架

    零反射无Hack实现插件技术:从理论上就已经确定无需对任何系统做兼容开发,更无任何隐藏API调用,和Google限制非公开SDK接口访问的策略完全不冲突。 全动态插件框架:一次性实现完美的插件框架很难,但阴影将这些...

    Android提高之蓝牙隐藏API探秘

    用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出,那么如何去使用这两项功能呢?本文利用JAVA的反射机制去调用这两项功能对应的函数:createBond...

    Android编程获取系统隐藏服务实现锁屏的方法

    我们可以调用IDevicePolicyManager服务中的lockNow方法来发送一个广播实现锁屏。 IDevicePolicyManager是被系统隐藏掉的,需要通过反射还获取此服务。 步骤: 1.创建MyAdmin的广播接收者继承DeviceAdminReceiver 2....

    Android提高之TelephonyManager功能探秘

    前面文章介绍了如何使用JAVA的反射机制来调用蓝牙的隐藏API,本文继续来练习JAVA的反射机制,探秘TelephonyManager在Framework里包含却在SDK隐藏的几项功能。 先来看一下本文程序运行的效果图,如下所示: 本文程序...

    SIM卡管家,可对sim卡中的联系人和短信进行增删改查

    采用反射来调用android 隐藏的API 实现对sim卡中的联系人和短信进行增删改查。 SIM卡管家主要功能如下:1、sim卡上的短信导出 2、sim卡联系人导出 3、sim卡上的短信导出 4、sim卡上的联系人导出 5、可以查看sim卡上...

    Android 实现电话拦截及拦截提示音功能的开发

     这个功能大家可能都知道了,就是利用反射原理调用ITelephony的隐藏方法来实现。  2、拦截后提示忙音/空号/已关机/已停机  这个功能其实是要用到MMI指令,具体如何设置呼叫转移的指定可以参考这里 ...

    Android TelephonyManager详解及实现代码

    JAVA的反射机制,探秘TelephonyManager在Framework里包含却在SDK隐藏的几项功能。先来看看本文程序运行的效果图:  本文程序演示了以下功能:  1.所有来电自动接听;  2.所有来电自动挂断;  3.开启/关闭Radio...

    framework_intermediates

    可以通过导入附件库,加载系统隐藏类,通过反射调用隐藏接口

    Android便携式热点的开启状态检测和SSID的获取方法

    这个方法被隐藏起来了,目前我是通过反射调用的。 /** * Gets the Wi-Fi enabled state. * @return One of {@link #WIFI_AP_STATE_DISABLED}, * {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_STATE_E

    Android开发资料合集--续

    13、使用Intent ACTION 调用系统程序 19 显示网页: 19 显示地图: 19 路径规划: 19 拨打电话: 19 发送 SMS/MMS 20 发送 Email 20 为程序添加一个“分享” 21 打开多种类型的文件: 21 Uninstall 程序 24 14、将Uri...

    ClearCache(5.0)

    通过反射机制,调用系统隐藏的API,清除手机所有的app缓存. 关键方法:freeStorageAndNotify。前提:添加AIDL文件 参考博客:http://blog.csdn.net/DucklikeJAVA/article/details/50951668

    来电拦截及拦截后的提示音

    电话拦截这个功能大家可能都知道了,就是利用反射原理调用ITelephony的隐藏方法来实现。这个就不说了,在附件的代码里有。 2.拦截后提示忙音/空号/已关机/已停机这个功能其实是要用到MMI指令,具体如何设置呼叫转移...

Global site tag (gtag.js) - Google Analytics