最近遇到一个奇葩的需求,要禁用系统的通话功能(不能打电话,不能接电话)。感觉有点反人类啊。刚开始的思路是:
1.写一个app,启动一个广播接收者(PhoneStateReceiver),监听系统的广播(android.intent.action.PHONE_STATE)启动一个(PhoneService),通过反射拿到挂断电话的API
TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
ITelephony iTelephony = getTelephony(tm);
iTelephony.endCall();
2.写一个监听开机的广播,做一个开机启动这个app。
3.常驻内存(保活),实验各种常驻内存方案:1.JobScheduler方案。2.循环播放一段无声音频,"打造金刚不坏之身"。3.单进程守护。4.双进程守护方案。结果是在用户主动清理内存时(用户单点清理本应用的内存),所有的方案都无法做到常驻内存。
这个思路宣告失败。
新思路是考虑是不是可以把手机通话功能相关的apk卸载掉或者屏蔽掉。在此过程中偶然发现可以禁用冻结/禁用系统应用。于是沿着这个思路继续进行。
1.获取手机的root权限。每个手机的root的方法不一样大家网上自行搜索。(XXX一键root等等)
2.要知道要禁用的应用对应的包名。这个大家自行百度,或者通过命令行1.adb shell 2.su 3.pm list packages | grep com.android 列出所有的系统级别的应用。看看包名猜测一下。哈哈。。。
3.命令行执行1.adb shell 2.su 3.pm hide 包名,就可以冻结对应的系统应用了。
4.重启系统执行命令adb reboot.
5.如果想恢复执行命令1.adb shell 2.su 3.pm unhide 包名,即可。
6.重启系统执行命令adb reboot.
Tips:
1.终端命令行模拟器(android手机上使用命令行):
http://bbs.zhiyoo.com/forum.phpmod=attachment&aid=NTMxNDc5NXxhZGY2N2RiODI5YzViNWQzODU4ZmY0ZTJkMGVmNjFjNHwxNTAzNDU3OTQy&request=yes&_f=.apk
2.Android pm 命令行详解:
http://www.apkbus.com/home.php?mod=space&uid=664680&do=blog&quickforward=1&id=68737
共同学习,写下你的评论
评论加载中...
作者其他优质文章