adb am start -n [package]/[classname]
adb am startは便利だが、パッケージ名の指定のみでは起動ができない。
-n オプションで起動には起動する対象のActivityの名前を取得する必要がある。
このActivityの名前を、端末から取得してinteractiveに指定のパッケージを起動するコマンドを書いた。
launchapp
adb shell pm dumpが使える端末であれば、パッケージ名から起動できるscriptをかける。
使い方.
- 何も指定せずにpecoにまかせて起動
$ launchapp # interactive launch with peco
- 引数にgrepできるパッケージ名の一部を渡して起動。
$ launchapp naver # launch with grep word
解説
adb shell list package
端末にインストール済みのパッケージ名の取得はこれで行える。
$ adb shell pm list package
package:com.dmm.app.store
package:com.android.calendar
package:jp.naver.line.android
package:jp.co.katakata_game.BallPuzzle001
package:com.android.backupconfirm
package:com.eoruzea.money_defense
package:com.android.packageinstaller
package:com.android.providers.userdictionary
package:com.android.providers.downloads.ui
package:com.android.externalstorage
package:com.google.android.launcher
package:com.square_enix.kairisei_MA
adb shell pm dump [package]
古いバージョンのOSでは利用できないが、dumpコマンドが利用できるとパッケージの詳細情報が取得できる。
$ adb shell pm dump com.android.calendar
...
Non-Data Actions:
android.intent.action.MAIN:
1c400389 com.android.calendar/.AllInOneActivity filter 3a87944f
Action: "android.intent.action.MAIN"
Category: "android.intent.category.DEFAULT"
Category: "android.intent.category.LAUNCHER"
Category: "android.intent.category.APP_CALENDAR"
android.intent.action.VIEW:
d4b6f8e com.android.calendar/.EventInfoActivity filter 1cad70e5
Action: "android.intent.action.VIEW"
Category: "android.intent.category.DEFAULT"
android.intent.action.SEARCH:
1cc443bc com.android.calendar/.SearchActivity filter 21c3e586
Action: "android.intent.action.SEARCH"
ここから、com.android.calendar/.AllInOneActivity の部分を抜き出せば起動時アプリが指定できる。
参考
installapp / uninstallappと組み合わせると更にいい感じ