安卓开发之探秘蓝牙隐藏API(转)
源:http://www.cnblogs.com/xiaochao1234/p/3793172.html
上次讲解Android的蓝牙基本用法,这次讲得深入些,探讨下蓝牙方面的隐藏API。用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出,那么如何去使用这两项功能呢?本文利用JAVA的反射机制去调用这两项功能对应的函数:createBond和removeBond,具体的发掘和实现步骤如下:
1、使用Git工具下载platform/packages/apps/Settings.git,在Setting源码中查找关于建立配对和解除配对的API,知道这两个API的宿主(BluetoothDevice);
2、使用反射机制对BluetoothDevice枚举其所有方法和常量,看看是否存在:
结果如下:
11-29 09:19:12.012: method name(452): cancelBondProcess 11-29 09:19:12.020: method name(452): cancelPairingUserInput 11-29 09:19:12.020: method name(452): createBond 11-29 09:19:12.020: method name(452): createInsecureRfcommSocket 11-29 09:19:12.027: method name(452): createRfcommSocket 11-29 09:19:12.027: method name(452): createRfcommSocketToServiceRecord 11-29 09:19:12.027: method name(452): createScoSocket 11-29 09:19:12.027: method name(452): describeContents 11-29 09:19:12.035: method name(452): equals 11-29 09:19:12.035: method name(452): fetchUuidsWithSdp 11-29 09:19:12.035: method name(452): getAddress 11-29 09:19:12.035: method name(452): getBluetoothClass 11-29 09:19:12.043: method name(452): getBondState 11-29 09:19:12.043: method name(452): getName 11-29 09:19:12.043: method name(452): getServiceChannel 11-29 09:19:12.043: method name(452): getTrustState 11-29 09:19:12.043: method name(452): getUuids 11-29 09:19:12.043: method name(452): hashCode 11-29 09:19:12.043: method name(452): isBluetoothDock 11-29 09:19:12.043: method name(452): removeBond 11-29 09:19:12.043: method name(452): setPairingConfirmation 11-29 09:19:12.043: method name(452): setPasskey 11-29 09:19:12.043: method name(452): setPin 11-29 09:19:12.043: method name(452): setTrust 11-29 09:19:12.043: method name(452): toString 11-29 09:19:12.043: method name(452): writeToParcel 11-29 09:19:12.043: method name(452): convertPinToBytes 11-29 09:19:12.043: method name(452): getClass 11-29 09:19:12.043: method name(452): notify 11-29 09:19:12.043: method name(452): notifyAll 11-29 09:19:12.043: method name(452): wait 11-29 09:19:12.051: method name(452): wait 11-29 09:19:12.051: method name(452): wait
3、如果枚举发现API存在(SDK却隐藏),则自己实现调用方法:
PS : SDK之所以不给出隐藏的API肯定有其原因,也许是出于安全性或者是后续版本兼容性的考虑,因此不能保证隐藏API能在所有Android平台上很好地运行。。。
本文程序运行效果如下:

main.xml源码如下:
工具类ClsUtils.java源码如下:
主程序testReflect.java的源码如下:
安卓开发之探秘蓝牙隐藏API(转)的更多相关文章
- 安卓开发之探秘蓝牙隐藏API
上次讲解Android的蓝牙基本用法,这次讲得深入些,探讨下蓝牙方面的隐藏API.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在S ...
- Android开发之探秘蓝牙隐藏API
这次讲得深入些,探讨下蓝牙方面的隐藏API.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出,那么如何去使用这两项功能呢 ...
- 探秘蓝牙隐藏API
上次讲解Android的蓝牙基本用法,这次讲得深入些,探讨下蓝牙方面的隐藏API.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在S ...
- Android应用开发中如何使用隐藏API(转)
一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类.方法或常量)是有原因的.其中很大的原因就是Android系统本身还在不断的进化发展中.从1.0.1.1到 ...
- 安卓开发 利用百度识图api进行物体识别
前文 之前的随笔中,已经通过相机或相册获取到了我们想要的图片,接下来进行识图api的配置工作.我使用的是百度的api,利用python获取信息,并在MainActivity中进行调用来输出信息. 一. ...
- 安卓开发 利用百度识图api进行物体识别(java版)
之前的随笔中,已经实现了python版本调用api接口,之所以使用python是因为python比java要简洁. 但是我发现在使用过程中,chaquopy插件会弹出底部toast显示"un ...
- Kotlin 语言高级安卓开发入门
过去一年,使用 Kotlin 来为安卓开发的人越来越多.即使那些现在还没有使用这个语言的开发者,也会对这个语言的精髓产生共鸣,它给现在 Java 开发增加了简单并且强大的范式.Jake Wharton ...
- 安卓开发笔记——TabHost组件(二)(实现底部菜单导航)
上面文章<安卓开发复习笔记——TabHost组件(一)(实现底部菜单导航)>中提到了利用自定义View(ImageView+TextView)来设置一个底部菜单的样式 这边再补充一种更为灵 ...
- 安卓开发开发规范手册V1.0
安卓开发开发规范手册V1.0 之前发布过一份Web安全开发规范手册V1.0,看到收藏文章的读者挺多,发现整理这些文档还挺有意义. 最近周末抽了些时间把之前收集关于安卓安全开发的资料也整理了一下,整理出 ...
随机推荐
- MAC图片格式转换
OS X下有一个sips的程序可以用来处理图片. sips的名称功能非常强大,参考 帮助文档 . 这里我们只用到其中的一个功能,转换图片格式. 命令参考: sips - s format jpeg ...
- Ubuntu为已经安装的PHP7单独编译mysqli
编译安装PHP7后没有在ext中没有生成mysqli.so等文件,现在单独编译安装mysqli php7安装的位置:/usr/local/php7/ 我的扩展目录:/usr/local/php7/li ...
- centos下安装与配置Apache方法
下面以httpd-2.0.55.tar.gz版本为例,介绍Apache在Linux中的安装过程:1.解压和解包安装文件:gzip -d httpd-2.0.55.tar.gztar xvf httpd ...
- selenium高级用法
http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp# WebDriver: Advanced Usage Explicit and Im ...
- [转]关于Socket粘包问题
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一两个简单概念长连接与短连接:1.长连接 Client方与Server方先建立通 ...
- Shell:进程的层级关系
[luwenwei@appdev115 ~]$ ps -ef | grep initroot 1 0 0 Apr24 ? 00:08:25 init [3] [luwenwei@appdev115 ~ ...
- shell之路【第四篇】输入输出重定向
输出重定向 命令输出重定向的语法为: command > file 或 command >> file 这样,输出到显示器的内容就可以被重定向到文件.果不希望文件内容被覆盖,可以使用 ...
- 校验 MD5 值
Linux 环境下:打开终端,输入命令:"md5sum filename",将结果与网页提供值对比.Windows 环境下:下载 MD5 校验软件并使用.
- ActiveX控件打包成Cab实现浏览器自动下载安装
前言 我们在浏览器中使用我们自己的一些OCX,或者是DLL这一类的文件,在X86的机器上需要我们手动将这些文件拷贝到Windows/System32 文件夹下面去,然后通过Dos命令regsvr32 ...
- Inno Setup入门(十八)——Inno Setup类参考(4)
分类: Install Setup 2013-02-02 11:29 406人阅读 评论(0) 收藏 举报 编辑框 编辑框也叫文本框,是典型的窗口可视化组件,既可以用来输入文本,也可以用来显示文本,是 ...