私は Android の機能テストを書いています。それらが機能するためには、デバイスが起動していて、アプリケーションが視覚化されている必要があります。そのためにAndroid 開発者に相談しました。ただし、提案されたソリューションにはいくつかの問題があります。
- 提案された方法には現在、いくつかの非推奨の方法があります。Android API は、ウィンドウでフラグを使用するようにアドバイスするようになりました。
このクラスは API レベル 13 で廃止されました。代わりに FLAG_DISMISS_KEYGUARD や FLAG_SHOW_WHEN_LOCKED を使用してください。これにより、アプリケーションがフォアグラウンドに出入りするときにキーガードをシームレスに非表示にすることができ、特別なアクセス許可を要求する必要はありません。キーガードを無効化/再有効化できる newKeyguardLock(String) によって返されるハンドル。
私はこの提案を試みましたが、非推奨の解決策とは対照的に、フラグ 1 jsut は機能しません - デバイスのロックを解除しません。また、フラグソリューションの不安定性を確認するソースも見つけました(例:この回答へのコメント)。
- 2 つ目の問題は、テスト対象のアプリケーションにアクセス許可を追加する必要があることです。これはかなり間違ったアプローチだと思います(テストできるようにするためにテスト中のコードを変更します)。そのために使用するようにアドバイスする場所をいくつか見つけました
src/debug/AndroidManifest.xml
(たとえば、これとこれ)。ただし、記載されているとおりには発生しません。デバッグ Mainfest は、デバイスに展開されたものに含まれません。ビルドとデプロイの方法に関連していますか? 開発には Eclipse (ADT) を使用します。このマニフェスト インジェクションは、ant のようなビルド ツールを使用した場合にのみ機能しますか?
全体として、テストの実行中にデバイスのロックを解除して起動し続けるための安定したソリューションについて、誰かがアドバイスできますか?
編集
RobotiumunlockScreen
のフレームワークの最新バージョンには、メソッドも含まれていることがわかりました。上記で提案されたウィンドウフラグを正確に使用しており、私のデバイスでも動作していません。