Android デバッグ中か否かを判定する
Android アプリから、GAE の認証を行うことは出来たのだが、GAE の SDKに含まれる開発環境にうまく接続することが出来ない。
仕方がないので、デバッグ中か否かを判定して、デバッグ中の場合は、接続先のURLをローカルアドレスに変更し、認証プロセスをスキップさせようと思いそれらしいAPIを探してみる。
android.os.Debug.isDebuggerConnected()
あった。
・・・ が、試せど試せど 上記の結果が true にならない。いらいらいらいら。
しらべてたら、SDKにこんな記述が。
Declare your application as debuggable in your manifest
マニフェストファイルに書けばいいのね。ふーん。
で、見てみると、ありました、Debuggable = true に設定。
LogCat に出力するとキャプチャがとれないし、false の場合確認が出来ないので、Toast に表示させるべく、メイン Activity の onCreate に以下を記述。
(Toast.makeText(this, String.valueOf("Debug.isDebuggerConnected() = " + Debug.isDebuggerConnected()), Toast.LENGTH_LONG)).show();
(が、Toast にしてもキャプチャはとれないことに後で気づく)
起動してみると、以下の様なダイアログが。ちゃんと機能してるっぽい。あたりまえか。
そして、きちんと Toast に true が表示されました。
もちろん USB デバッグを停止して実行すると false が返りました。これでデバッグ時と通常時で挙動が切り替えられます。一歩野望に近づきました。
Eclipse のプラグインからもいろいろ操作ができるようになりました。
リリースするときには false に戻した方が良さそうです。