今天看了篇文章,思想值得学习呀。要学会用反射……
本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!
上次讲解Android的蓝牙基本用法,这次讲得深入些,探讨下蓝牙方面的隐藏API。用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出,那么如何去使用这两项功能呢?本文利用JAVA的反射机制去调用这两项功能对应的函数:createBond和removeBond,具体的发掘和实现步骤如下:
1.使用Git工具下载platform/packages/apps/Settings.git,在Setting源码中查找关于建立配对和解除配对的API,知道这两个API的宿主(BluetoothDevice);
2.使用反射机制对BluetoothDevice枚举其所有方法和常量,看看是否存在:
static public void printAllInform(Class clsShow) { |
结果如下:
11-29 09:19:12.012: method name(452): cancelBondProcess |
3.如果枚举发现API存在(SDK却隐藏),则自己实现调用方法:
/** |
PS:SDK之所以不给出隐藏的API肯定有其原因,也许是出于安全性或者是后续版本兼容性的考虑,因此不能保证隐藏API能在所有Android平台上很好地运行。。。
|
工具类ClsUtils.java源码如下:
package com.testReflect; |
主程序testReflect.java的源码如下:
package com.testReflect; |