android关于获取隐藏类的心得
来源:互联网 发布:云计算对oa系统的影响 编辑:程序博客网 时间:2024/04/30 13:41
对于在系统源码中有些类被@hide了。我们在做apk开发时无法像其他类一样 直接调用。所以我们有以下方法:
1.反射
2.放到系统源码下编译
3.用系统签名打包apk
先说说第一种吧 反射:
主要是利用java 中java.lang.Object下的Method类
Method提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。
Method允许在匹配要调用的实参与基础方法的形参时进行扩展转换;但如果要进行收缩转换,则会抛出IllegalArgumentException。
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;
}
说说第三种引用系统签名打包apk
因为我们的 apk有隐藏类。先生成apk,然后用系统签名文件在build/target/product/security下的platform.pk8和platform.x509.pem这2个文件打包apk(可能根据系统不同。文件名不一样)。然后用java命令打包apk:
java -jar signapk.jar platform.x509.pem platform.pk8 D:\xxx.apk D:\xxxSigned.apk
后一个apk为签名后 的apk
- android关于获取隐藏类的心得
- unity关于代码控制ugui显示隐藏的一些心得
- 关于android自定义键盘 隐藏系统键盘后 EditText无法正常获取光标的小记
- Android用loadClass获取系统隐藏类和隐藏服务的方法
- android中fragment的获取与隐藏
- 关于android自适应布局的一点点心得
- 关于 Android 混淆的一些心得
- Android中关于scrollBy的一点点心得
- 关于android TV开发的若干心得
- 关于Android的自动更新库(使用心得)
- Android中关于scrollBy的一点点心得
- android中使用反射获取隐藏类
- 关于Android sdk隐藏接口的使用
- 关于 显示和隐藏 Android 的方法
- 关于android隐藏标题栏失效的问题
- 关于稳定的获取src路径的心得与分享
- 2017-09-22 关于C++获取网页的一些心得
- 关于EditText获取焦点,隐藏软键盘的问题
- 一些对GIS的理解
- SQLServer2005 百炼成钢
- 凹凸贴图(bump mapping)
- C++ 书籍推荐录
- struts2 学习笔记三----动态方法调用
- android关于获取隐藏类的心得
- 普适计算应用:香蕉也能当键盘——Makey Makey
- XMU 1315.字符串编码 字符串的编码最短长度
- linux 的 BASH
- 七夕,你拿什么拯救你的爱人?
- linux 账号管理与例行工作
- struts2 学习笔记四---ongl表达式
- linux 文件属性与权限
- 京东商城技术架构:前端.NET后端Java