回覆列表
  • 1 # 佳期如夢將至

    開啟Android手機的USB除錯對於使用豌豆夾、除錯程式等來說很重要。下面說說如何用程式碼自動開啟USB除錯。先分析USB除錯的相關原始碼。在 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 copyvoid 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除錯了。[java] view plain copyboolean 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加上兩個許可權[html] view plain copy<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 可以把程式push到/system/app,並對這個apk加上0644的許可權,重啟手機,可以發現usb除錯自動打開了。

  • 中秋節和大豐收的關聯?
  • 怎麼看待期指開放10倍?