在Android系统中所有的文件,可以点击menu菜单弹出更多选项,其中一个功能为分享,我们可以将自己apk在编译是添加属性,以至于在系统的任何位置点击分享,也能看到我们自己的程序。今天的重点不在此 分享上,关于分享我这儿看到一篇文章,http://blog.csdn.net/xyz_lmn/article/details/16856843着实不错。
上面的分享贴一张图片
今天我想介绍的是setting中的print服务。当你安装一个apk程序如果带有打印功能会在print服务列表中出现打印服务以及默认打印机。
先贴一张图片
分析代码,关于setting源码分析网上有很多的帖子,就不赘述了,
- 打开源码目录找出与print有关的代码
根据setting界面,我们一眼就可以确认print的界面在res的xml文件中
节点的title内容可以从values的string.xml中得到确认,是不是跟界面显示一致。 - 根据这个xml文件我们就可以找到setting应用程序中print的源代码。
从安装的apk程序中查找有没有services的action中有android.printservice.PrintService这个名词,有就把该apk信息添加到print列表中。 - queryIntentServices函数是PackageManager的一个aidl文件中定义的函数。由系统的services继承实现起编译过程中binder机制生成的子类,从而实现通讯。
在apk程序中实现一个services类,继承android.printservice.PrintService此类,然后在mainfest文件中给此services声明加上一个action,name为android.printservice.PrintService。当在Android4.4.4以上,只有有系统打印的item,就会调用你的apk程序。