android am start

转自:http://d.hatena.ne.jp/minghai/20080809/p1

 

to launch galley:
adb shell am start -a android.intent.action.VIEW -d file:///mnt/sdcard/DCIM/Camera/IMG_19700102_015616.jpg -t image/jpeg

2008-08-09AndroidのIntentをコマンドから投げる

AndroidのIntentをコマンドから投げるAdd Star

色々と検索しているうちに偶然中国の方が非常に参考になる記事を書いているのを見つけました。

もちろん中国語でしたので読めないのですが、Googleに翻訳をしてもらいました。

中国語は英語に翻訳するとかなり良い翻訳が得られると思います。

翻訳結果

こちらの記事にて初めて知ったのですが、AndroidLinuxにはamというコマンドがあり、Intentをコマンドラインから投げることができます。

以下がヘルプです。

$ adb shell
# am
am
usage: am [start|instrument]
       am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
                [-c <CATEGORY> [-c <CATEGORY>] ...]
                [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]

                [-n <COMPONENT>] [-D] [<URI>]
       am instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
                [-w] <COMPONENT>
#

例えば次のように直接アプリケーションを起動することができます。

# am start -n com.google.android.browser/com.google.android.browser.BrowserActivity
am start -n com.google.android.browser/com.google.android.browser.BrowserActivity
Starting: Intent { comp={com.google.android.browser/com.google.android.browser.BrowserActivity} }

上のとおりに入力するとブラウザが実行され、ホームページ(デフォルトではGoogle)が表示されるはずです。

上の実行はコンポーネントを直接実行しておりますが、ActionとDataを用いたIntentの特徴である疎結合な呼出も可能です。

例えば、

# am start -a android.intent.action.VIEW http://www.google.com
am start -a android.intent.action.VIEW http://www.google.com
Starting: Intent { action=android.intent.action.VIEW data=http://www.google.com}

上記ではhttpで始まるURIに対してVIEWを行うため、やはりブラウザが表示されGoogleが表示されます。

しかし、次のようにgeo:を使いますと、

# am start -a android.intent.action.VIEW geo:35.698683,139.774219
am start -a android.intent.action.VIEW geo:35.698683,139.774219
Starting: Intent { action=android.intent.action.VIEW data=geo:35.698683,139.774219 }

Mapsアプリが実行され、秋葉原駅周辺が表示されます。

geo:ではGETのqオプションが利用できますので以下のように地名を指定することも可能です。

# am start -a android.intent.action.VIEW geo:0,0?q=Tokyo
am start -a android.intent.action.VIEW geo:0,0?q=Tokyo
Starting: Intent { action=android.intent.action.VIEW data=geo:0,0?q=Tokyo }
Warning: Activity not started, its current task has been brought to the front
#

上記のように入力すると東京が表示されます。

なぜかしら代々木ですね。

ダイアログや吹き出しの表示は画面の下にあるバックキーを押すと消えます。



さらにACTIONにCALLを、URIにtel:を用いると、

# am start -a android.intent.action.CALL tel:88888888
am start -a android.intent.action.CALL tel:88888888
Starting: Intent { action=android.intent.action.CALL data=tel:88888888 }
#

電話がかけられることが確認できます。

エミュレータでは実際にかけることができませんが、通話が開始した状態になります。


自分で試してみたところ実行できるのはActivityであり、ServiceもIntentを用意してstartServiceにて実行するものの、このamコマンドでは実行できないようです。

自作のActivityの呼出はもちろん大丈夫でした。



Androidには標準でかなりの数のIntentが用意されています。

丸山先生のAndroid勉強会の第一ターンでも多くのIntentが紹介されました。

一々プログラムを書かずにIntentの試験を行えるのは便利です。

またこのようなコマンドがあるということはC言語ライブラリレベルでもIntentが使えるのではないでしょうか。

ソースの公開がまた楽しみになりましたね。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值