2013年8月14日水曜日

Androidでシェルからアプリケーションを起動

AndroidではUSBでPCと接続して
Androidに用意されたコマンドを手動で実行することができます。
組み込みLinuxのシリアルコンソールみたいなものですね。
それにはAndroid SDKをインストールしてちょちょいと設定すればいいのですが、
ここで説明するのは面倒ですので以前"Android用アプリケーションの開発"で書いた のあたりでも見てください。

さて、実行できるコマンドはAndroidの"/system/bin"あたりにあり、
"ping"なんていうどこでも見かけるようなものもあったりします。
実行するにはPC上で
$ adb shell
を実行してから
$ ping 192.168.1.1
することになります。 "adb shell"は"telnet"でログインするのと同じ感覚です。
まあAndroidでpingしても面白くもなんともないので、
アプリケーションを実行する方法を紹介しましょう。

AndroidといえどLinuxであることに変わりはないので、
なんとなく見たことがあるコマンドもたくさんあるのですが、
いわゆるAndroidアプリケーションはDalvik仮想マシン上で動くものなので
アプリケーション名をタイプすれば実行できるわけではありません。
といって難しいものではなく
"am"というインテントを発行するツールがあるので、
$ am start -a android.intent.action.MAIN -n <パッケージ名>/.<アクティビティ名>
を実行するだけです。
パッケージ名はアプリケーションの識別子で
標準の時計だと"com.android.deskclock"になります。
アクティビティ名は他OSで言うところのウィンドウ名で
アプリケーションが持つ複数の画面のうち
どれを選択するかを指定します。
開発者にわかりやすい言い方をするなら
各アプリケーションの"AndroidManifest.xml"のXML文書内の、
manifest要素のpackage属性の値がパッケージ名で、
application要素内のactivity要素の
android:name属性の値がアクティビティ名になります。
よって
$ am start -a android.intent.action.MAIN -n com.android.deskclock/.SetAlarm
を実行すると時計のアラーム設定画面が表示されます。

"am"コマンドの他にもAndroid特有のコマンドが結構あるので
いろいろ遊んでみようと思っているところです。

0 件のコメント:

コメントを投稿