用Android代码实现自动打开USB调试
16lz
2021-01-23
在 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调试
- android执行外部程序,类似DELPHI里的EXEC函数
- Android 动画框架代码分析
- Android 7.0 app代码修改抓包
- android延续按两次返回退出程序(完整代码)
- Android 实现在Java代码中修改UI界面,并修改界面
- JS调用Java代码(Android)
- 【Android】Android Layout Binder——根据layout布局文件自动生