「USBデバッグが有効だと起動しないアプリ」を使うAndroid developer向けアプリを作った
USBデバッグは開発者向けオプションでON/OFFを切り替えることができる。
しかし、世の中には「USBデバッグが有効だと警告が出るアプリ」「そもそもエラーで立ち上がらないアプリ」が存在する。
(正直に言うと必要性が全く分からないが、とにかくそういうアプリは一定数存在する)
そういったアプリを使う場合、都度USBデバッグをオフにしないといけないため、非常に面倒。
→ クイック設定でUSBデバッグをON/OFFできればいいのでは?
作ったもの
インストール後、 adb shell pm grant com.nagopy.android.debugassistant android.permission.WRITE_SECURE_SETTINGS
でパーミッションを許可し、クイック設定パネルにadbのスイッチを追加すれば完了。
参考情報
「USBデバッグが有効か?」を取得する方法
Settings.Global.getInt()で取得できる。
キーはSettings.Global.ADB_ENABLED
ドキュメントに詳細は書かれていないが、利用個所の検索結果を見る限りgetIntによる取得でOK、有効なら1、無効なら0が返ってくる模様。
ADB_ENABLEDの設定を上書きする方法
Settings.Global.getInt()で取得できる値なので、Settings.Global.putInt()で更新できる。
しかし、この操作をするには以下のパーミッションが必要。
<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デバッグのスイッチが提供されていないのは、需要がないからだろうなぁ)
ソースコード全体
Discussion