2014年1月6日月曜日

【Android】キー・マウスイベントの発行

Androidでのキーボードのイベント発行やマウス・タッチイベントの発行について.
つまり,ユーザー操作なしにプログラム側でキー入力をすることについて.

自分のアプリ(署名が同一のアプリ)であれば可能.
InstrumentationクラスでのsendKeysや
リフレクションでIWindowManager.injectKeyEventで行うことができる.

しかし,自作アプリがバックグラウンドに行った瞬間,例外が発生する.
違う署名のアプリでは動作しないのだ.
これはsendKeysやinjetKeyEventを使うための権限
「INJECT_EVENTS」のセキュリティレベルがSignatureであるため.

Signatureであるというのはどういうことかというと,
自作アプリのテストのために
キーやタッチを自動で行うツールを作成することはできるが,
それで他人のアプリを動かすことはできない,ということである.

もちろん,そんなことができてしまえば危険である.
勝手に電話かけられたり
勝手に商品買わされたり
そういうことを防いでくれているのである.

ルートを取ればできるのではと思うが,
少なくともストアに登録するアプリでは不可能.

0 件のコメント:

コメントを投稿