MacroDroidのユーザー補助サービスの動作を継続

2023-11-06

Android

Androidスマホの自動化に何かと便利なMacroDroid(マクロドロイド)。珍しく課金して使っている。

アプリ操作を自動化するために、UI画面操作という機能をよく使っているのだが、Androidのセキュリティー?で、勝手に機能がオフにされてしまうという問題があった。(たぶん、Android10まではならないが、11からなる)

Androidの設定→その他の設定(機種によって違うかも)→アクセシビリティー→MacroDroidやMacroDroid UI画面操作が機能していませんという表記になってしまう。解除するには、その設定を一度オフにしてもう一度オンにする作業をおこなう

参考情報

  1. MacroDroid 設定
  2. How can I use adb to grant permission without root?
  3. MacroDroidアプリのユーザー補助サービスが停止してしまう問題への対応

MacroDroidの設定(歯車)に、「ユーザー補助サービスの動作を継続」(参考情報1参照)というのがあり、そこの必要な機能にチェックをいれれば継続してくれそうだが、それだけではだめで、ルート化するか、ADBで設定するかが必要という記載がされている(設定したらでなくなったので、正確な表記はわからない)。で、記載されている通りADBをたたいた

adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS

 のだが、

Exception occurred while executing 'grant':java.lang.SecurityException: grantRuntimePermission: Neither user 2000 nor current process has android.permission.GRANT_RUNTIME_PERMISSIONS.

と言われて通らなかった。だいぶん前に実施したときはあきらめて、都度アクセシビリティーの設定をしていたのだが、実家のスマホで使いたかったので、そういうわけにもいかなくなりもうちょっと調べたところ、参考情報2を見つけた。なんかいけたっぽい

  1. Androidの設定→その他の設定(機種によって違うかも)→開発者オプション(デフォルトではないので、出し方を検索してください)
  2. USBデバッグをON(ADB接続のために必要)
  3. 認可の監視を無効化するをON(今回見つけたところ。参考情報1では、"Disable Permission Monitoring"
この状態でADBをたたくと、何も言わずに終了した。「ユーザー補助サービスの動作を継続」の画面にもルート化やADBの表示がなくなったので、設定されているのではないかと期待したい。
時間がたたないと効果があるかどうかはわからないが、しばらく様子を見る。
なお、上記2,3の設定はADB実施後OFFにした。

2024.08.06追記
うまく行ってるようだ。
時々、UI操作の設定してくださいという通知が出ているが、放っておくと直ってる。たぶん。

204.10.08追記
やっぱりしばらく機能しなくなってる時がある。しばらくすると直っているような気もする。
ふと思いついて、MacroDroidのマクロで、冒頭に記載したアクセシビリティーのOff/On作業を定期的(毎日とか)に実施したらいいんじゃないかと思って作っていたのだが、そのマクロ自体にUI操作を使うので、一旦アクセシビリティーをOffにした時点でその後が動作しなくなる。当たり前か。この方針では無理な事に気付いた。UI操作ではなくできればいいのだが、そのようなアクションは見つけられなかった。
そのマクロの確認をしていた(まだ無理な事に気付いてない)時、(Androidの)設定→その他の設定→アクセシビリティ→MacroDroid→停止 となったあと、すぐにOnに戻った。手動でやっても同じ。
(MacroDroidの)設定→ユーザー補助サービスの動作を継続をOffにすると、停止したら停止したままなので、やっぱりその機能が機能しているみたい。
少なくとも、冒頭に記載したように手動でOff/Onして再設定していたころは、このような動きはしなかった(停止したら停止したままで、再度Onにする作業が必要)。
「UI操作が機能していません」となっていたところが違う。MacroDroidがバージョンアップして何か変わった?それとも、MacroDroid自体がUI操作のところで認識されてない状態になってたとか?
まぁでも、継続機能を設定しておけばすぐに戻るのなら、MacroDroid自体を常に機能するようにしておくことが必要なんではと思い、以下を設定してみた。(機種によって以下の呼び出し名が多少違うかも)
・(Androidの)設定→バッテリーー>詳細なバッテリー設定→バッテリーの最適化→MacroDroid→最適化しない
*この設定は、MacroDroidの設定にも、設定するように記載がある
・(Androidの)設定→アプリ管理→アプリリスト→MacroDroid→バッテリー使用量→バックグラウンドアクティビティを許可

2024.10.09追記
昨日、アクションが見つけられなかったと記載したが、存在した。というかちょっと見つけていたのだが、試してみずにユーザー補助サービス全体をOn/Offする機能(そもそもそんなボタンないのに)と思い込んでいた。
アクションに以下を記載すれば行けそう。
・機器の設定→ユーザー補助サービス→無効→MacroDroid
・機器の設定→ユーザー補助サービス→有効→MacroDroid
・機器の設定→ユーザー補助サービス→無効→MacroDroid UI画面操作
・機器の設定→ユーザー補助サービス→有効→MacroDroid UI画面操作
すでにそれを実施している方がいた(参考情報3)。
ユーザー補助サービスがOffになったというMacroDroidのログを検知して、トリガーするそうだ。さっそく自分のログを見ると、
"UI画面操作 - [ユーザー補助]へのアクセスが必要"
"UI Interaction failed. UI Interaction accessibility service is disabled 自分のマクロ名"
というログがあった。
*参考情報3では、"Accessibilty service is not enabled"を検知してるので、ログが変わった?
UI補助サービスを使ったマクロを実施したときに記録されているようなので、これをトリガーにすると、少なくともその時のマクロは失敗しそう。
ただ、定期的(毎日とか)に実施しても、たまたまそのあとOffにされたらダメだし、その方がスマートだなぁ。でも、アクセスを設定してすぐはAndroidがOffにしない可能性もあるし…。
失敗したマクロ名を書かれているので、それを再実行するマクロにしたらよりよさそうだけど、難しそう。
しばらくは昨日の設定で様子を見ることにする。