Androidアプリからシステムに対して操作したいのだけれども、制限が強い。
せめてadbでできる程度でも良いのだけれども、、、ということで調べてみた。
元ネタ(Android 実機のみでタッチイベントを発生させる | のい太ろぐ、Androidの画面をPCにミラーリングするソフトを作る2 リアルタイムタッチ編)によると、純粋なAndroid内部からの操作は制限されているけれども、外部からshellで起動してしまえば以降はそのshellの権限で実行し続けられるので、adbコマンドもいろいろ使える、ということらしい。
なるほど。
元ネタではtouchscreenとkeyを送るところまではできているので、当方ではadbコマンドを送れるようにした。
結果、思ってたよりもadbコマンドを送ってから実行されるまで時間がかかることがわかった(0.5~1秒くらい)。
目的によっては使える、はず。
◆PowerShell
ついでに、PCからサーバーを起動するためのスクリプトをPowerShellで作った。いちいちCLASSPATHをコピペする必要が無くなった。
1 2 3 4 5 6 7 8 9 |
[string] $IPAddress = "192.168.1.17" [string] $cmd = "adb -s " + $IPAddress + ":5555 shell pm path com.example.resetmara" [string] $str = Invoke-Expression $cmd $str.Substring("package:".Length) | Out-Null $str = '"CLASSPATH=' + $str + ' /system/bin/app_process /system/bin com.example.resetmara.InputHost"' # ↓永続化の場合 #$str = '"CLASSPATH=' + $str + ' /system/bin/app_process /system/bin com.example.resetmara.InputHost >/dev/null 2>&1 </dev/null &"' $cmd = 'adb -s ' + $IPAddress + ' shell ' + $str Invoke-Expression $cmd |
◆ソース
https://github.com/umhr/ResetMara
◆参考
Android 実機のみでタッチイベントを発生させる
Androidの画面をPCにミラーリングするソフトを作る2 リアルタイムタッチ編
ログアウトしてもバックグラウンド ジョブを継続する方法