用反射来调用android中的隐藏类
来源:互联网 发布:ios腾讯新闻完整源码 编辑:程序博客网 时间:2024/06/09 23:41
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 中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;
}
- 用反射来调用android中的隐藏类
- 用反射来调用android中的隐藏类
- 用反射来调用Android里的隐藏Class
- 用反射来调用Android里的隐藏Class
- Android-反射调用隐藏API
- Android中调用隐藏类中的方法
- [Android] 利用java反射调用隐藏Api
- 采用反射调用android隐藏的api
- 利用反射调用android隐藏函数getVolumePaths
- Android 通过反射来隐藏年月日的日-DatePicker
- Android 反射调用类
- Android 反射、代理调用系统隐藏API方法与接口类连接Wi-Fi
- java反射机制 调用android得隐藏api
- android学习日记:利用反射调用隐藏API
- Android学习——利用反射调用@Hide隐藏函数
- Android学习——利用反射调用@Hide隐藏函数
- 如何通过反射来调用类方法
- android 反射调用其他apk中的方法
- 跟我一起学Kubernetes
- opencv for android 教程(环境搭建篇)
- HDU2481 Toy (数论好题)
- [C语言]嵌入式程序员应该知道的0x10个问题
- 第三章 BIRT数据源的配置(续)
- 用反射来调用android中的隐藏类
- Git使用笔记(3)
- tomcat 中web项目 缺失路径
- 微信开发本地调试工具(模拟微信客户端)
- 自定义 viewpager 监听 onpagechangelistener 报错
- Codeforces Round #FF (Div. 2) D. DZY Loves Modification 贪心+优先队列
- Lazarus解决含中文文件名或路径的使用问题
- Leetcode 2: reverse polish notation
- php缓冲函数