打开Android手机的USB调试对于使用豌豆夹、调试程序等来说很重要。下面说说如何用代码自动打开USB调试。先分析USB调试的相关源代码。

在 packages/apps/Settings/src/com/Android/settings/DevelopmentSettings.java 找到关于 USB Debug Enable 的代码:

Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED,  0 );   
此文件中,将根据用户设置将其值保存到 Settings 数据库中。别处将根据其值动态变化做出相应动作

经搜索,在 frameworks/base/services/java/com/Android/server/NotificationManagerService.java 中存在利用该值判断是否在状态栏中进行通知。代码如下:

别处将根据其值动态变化做出相应动作如状态栏消息提示。

void  observe() {         ContentResolver resolver = mContext.getContentResolver();         resolver.registerContentObserver(Settings.Secure.getUriFor(                 Settings.Secure.ADB_ENABLED), false ,  this );         update();     }          @Override   public   void  onChange( boolean  selfChange) {         update();     }          public   void  update() {         ContentResolver resolver = mContext.getContentResolver();         mAdbEnabled = Settings.Secure.getInt(resolver,                     Settings.Secure.ADB_ENABLED, 0 ) !=  0 ;         updateAdbNotification();     }     

通过分析代码,我们可以实现用程序自动打开usb调试了。

boolean enableAdb = (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加上两个权限

   
 
可以把程序push到/system/app,并对这个apk加上0644的权限,重启手机,可以发现usb调试自动打开了。

 

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-10/46146.htm

更多相关文章

  1. android和js互相调用的问题
  2. Android两种不同的方法去实现图像的放大与缩小(很有帮助)
  3. Android使用代码实现左右半圆的按钮背景
  4. Android(安卓)OpenGL 学习笔记 --开始篇
  5. Android(安卓)cupcake源代码获取和编译 for Ubuntu 9.04
  6. android有用代码片段(一)
  7. Android(安卓)上的 Scala, 实战之路(二)——Hello World即遭不测
  8. Android(安卓)从一个App跳转到另一个App
  9. Android上获取本机安装的应用程序

随机推荐

  1. 搭建Android开发环境01——Java
  2. Android自定义ProgressBar
  3. 查看android路由表
  4. Android修改PackageInstaller自动安装指
  5. Android SDK更新失败对策
  6. 一张图片覆盖在另一个图片上
  7. android:broadcast_01
  8. android检查sd卡是否可写
  9. Tab游标,实现fragment滑动,,游标改变
  10. PullToRefreshLayout +RecyclerView 实现