用Android代码实现自动打开USB调试
16lz
2021-12-04
在 packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java 找到关于 USB Debug Enable 的代码:
[java] view plain copy- Settings.Secure.putInt(getContentResolver(),Settings.Secure.ADB_ENABLED,0);
此文件中,将根据用户设置将其值保存到 Settings 数据库中。别处将根据其值动态变化做出相应动作
经搜索,在 frameworks/base/services/java/com/android/server/NotificationManagerService.java 中存在利用该值判断是否在状态栏中进行通知。代码如下:
别处将根据其值动态变化做出相应动作如状态栏消息提示。
[java] view plain copy
- voidobserve(){
- ContentResolverresolver=mContext.getContentResolver();
- resolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.ADB_ENABLED),false,this);
- update();
- }
- @OverridepublicvoidonChange(booleanselfChange){
- update();
- }
- publicvoidupdate(){
- ContentResolverresolver=mContext.getContentResolver();
- mAdbEnabled=Settings.Secure.getInt(resolver,
- Settings.Secure.ADB_ENABLED,0)!=0;
- updateAdbNotification();
- }
通过分析代码,我们可以实现用程序自动打开usb调试了。
- booleanenableAdb=(Settings.Secure.getInt(getContentResolver(),Settings.Secure.ADB_ENABLED,0)>0);
- if(!enableAdb){
- Settings.Secure.putInt(getContentResolver(),Settings.Secure.ADB_ENABLED,1);
- }
马上进行运行,会出现异常,通过Logcat可以看到没有权限。android.permission.WRITE_SECURE_SETTINGS是不允许普通程序来执行,必须要有系统的签名或放到
/system/app下。
(1)、在AndroidManifest.xml加上两个权限
[html] view plain copy- <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"></uses-permission>
- <uses-permissionandroid:name="android.permission.WRITE_SECURE_SETTINGS"/>
更多相关文章
- Android的文本编解码工具类
- android典型代码系列(一)------android调试
- Error:(15) No resource identifier found for attribute 'round
- Android(安卓)动画框架代码分析
- Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
- android intent
- Android(安卓)7.0 app代码修改抓包
- Android学习札记22:ThumbnailUtils
- Dialog设置全屏