Android

package名のみからadb shell am start -nする

More than 3 years have passed since last update.

adb am start -n [package]/[classname]

adb am startは便利だが、パッケージ名の指定のみでは起動ができない。
-n オプションで起動には起動する対象のActivityの名前を取得する必要がある。
このActivityの名前を、端末から取得してinteractiveに指定のパッケージを起動するコマンドを書いた。

launchapp

adb shell pm dumpが使える端末であれば、パッケージ名から起動できるscriptをかける。

使い方.

1) 何も指定せずにpecoにまかせて起動

$ launchapp # interactive launch with peco

2) 引数に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と組み合わせると更にいい感じ