📑

「USBデバッグが有効だと起動しないアプリ」を使うAndroid developer向けアプリを作った

2022/04/02に公開

USBデバッグは開発者向けオプションでON/OFFを切り替えることができる。
しかし、世の中には「USBデバッグが有効だと警告が出るアプリ」「そもそもエラーで立ち上がらないアプリ」が存在する。
(正直に言うと必要性が全く分からないが、とにかくそういうアプリは一定数存在する)
そういったアプリを使う場合、都度USBデバッグをオフにしないといけないため、非常に面倒。

→ クイック設定でUSBデバッグをON/OFFできればいいのでは?

作ったもの

https://play.google.com/store/apps/details?id=com.nagopy.android.debugassistant

インストール後、 adb shell pm grant com.nagopy.android.debugassistant android.permission.WRITE_SECURE_SETTINGS でパーミッションを許可し、クイック設定パネルにadbのスイッチを追加すれば完了。

参考情報

「USBデバッグが有効か?」を取得する方法

Settings.Global.getInt()で取得できる。
キーはSettings.Global.ADB_ENABLED
https://developer.android.com/reference/android/provider/Settings.Global#ADB_ENABLED

ドキュメントに詳細は書かれていないが、利用個所の検索結果を見る限りgetIntによる取得でOK、有効なら1、無効なら0が返ってくる模様。

ADB_ENABLEDの設定を上書きする方法

Settings.Global.getInt()で取得できる値なので、Settings.Global.putInt()で更新できる。

しかし、この操作をするには以下のパーミッションが必要。

AndroidManifest.xml
    <uses-permission
        android:name="android.permission.WRITE_SECURE_SETTINGS"
        tools:ignore="ProtectedPermissions" />

このパーミッションはADBコマンドで明示的に許可する必要がある。
逆に言うと、明示的に許可さえすればルート権限は不要。
以下のように許可する。

adb shell pm grant アプリケーションID android.permission.WRITE_SECURE_SETTINGS

ワイヤレスデバッグのスイッチは?

途中まで同じ要領で自作していたが、そもそも公式で提供されている。「開発者向けオプション>クイック設定開発者用タイル」から有効にすることで追加可能。
開発者向けオプションもOSアップデートのたびに増えていますね。助かる。
(USBデバッグのスイッチが提供されていないのは、需要がないからだろうなぁ)

ソースコード全体

https://github.com/75py/DebugAssistant

Discussion