1. 程式人生 > >adb啟動程式命令:adb shell am start

adb啟動程式命令:adb shell am start

轉自 https://blog.csdn.net/u011006622/article/details/78480520

 

在Android中,除了從介面上啟動程式之外,還可以從命令列啟動程式,使用的是命令列工具am.

啟動的方法為

adb shell
      # am start -n {包(package)名}/{包名}.{活動(activity)名稱}

第一種情況: 從原始碼,得知包名。

程式的入口類可以從每個應用的AndroidManifest.xml的檔案中得到,以計算器(calculator)為例,它的

<manifest xmlns:android="http://schemas.android.com/apk/res/android" …

package="com.android.calculator2" …>…

由此計算器(calculator)的啟動方法為:# am start -n com.android.calculator2/com.android.calculator2.Calculator

對於HelloActivity這個示例工程,AndroidManifest.xml如下所示:

<manifest …

package="com.example.android.helloactivity" …>

由此它的啟動方法為:

# am start -n com.example.android.helloactivity/com.example.android.helloactivity.HelloActivity

其他的一些應用啟動命令,如下所示:

calendar(日曆)的啟動方法為:

# am start -n com.android.calendar/com.android.calendar.LaunchActivity

AlarmClock(鬧鐘)的啟動方法為:

# am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock

Music 和 Video(音樂和視訊)的啟動方法為:

# am start -n com.android.music/com.android.music.MusicBrowserActivity

# am start -n com.android.music/com.android.music.VideoBrowserActivity

# am start -n com.android.music/com.android.music.MediaPlaybackActivity

Camera(照相機)的啟動方法為:

# am start -n com.android.camera/com.android.camera.Camera

Browser(瀏覽器)的啟動方法為:

# am start -n com.android.browser/com.android.browser.BrowserActivity

  一般情況希望,一個Android應用對應一個工程。值得注意的是,有一些工程具有多個活動(activity),而有一些應用使用一個工程。例如:在Android介面中,Music和Video是兩個應用,但是它們使用的都是packages/apps/Music這一個工程。而在這個工程的AndroidManifest.xml檔案中,有包含了不同的活動(activity)。


usage: am [subcommand] [options]

    start an Activity: am start [-D] <INTENT>
        -D: enable debugging

    send a broadcast Intent: am broadcast <INTENT>

    start an Instrumentation: am instrument [flags] <COMPONENT>
        -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
        -e <NAME> <VALUE>: set argument <NAME> to <VALUE>
        -p <FILE>: write profiling data to <FILE>
        -w: wait for instrumentation to finish before returning

    start profiling: am profile <PROCESS> start <FILE>
    stop profiling: am profile <PROCESS> stop

    <INTENT> specifications include these flags:
        [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
        [-c <CATEGORY> [-c <CATEGORY>] ...]
        [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
        [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
        [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
        [-n <COMPONENT>] [-f <FLAGS>] [<URI>]

啟動的方法為

# am start -n 包(package)名/包名.活動(activity)名稱

啟動的方法可以從每個應用的AndroidManifest.xml的檔案中得到

 

Music 和 Video(音樂和視訊)的啟動方法為:

# am start -n com.android.music/com.android.music.MusicBrowserActivity

# am start -n com.android.music/com.android.music.VideoBrowserActivity

# am start -n com.android.music/com.android.music.MediaPlaybackActivity

 

Camera(照相機)的啟動方法為:

# am start -n com.android.camera/com.android.camera.Camera

 

Browser(瀏覽器)的啟動方法為:

# am start -n com.android.browser/com.android.browser.BrowserActivity

 

啟動瀏覽器 :

am start -a android.intent.action.VIEW -d  http://www.google.cn/

 

撥打電話 :

am start -a android.intent.action.CALL -d tel:10086

 

啟動 google map 直接定位到北京 :

am start -a android.intent.action.VIEW geo:0,0?q=beijing

第二種情況:從log資訊得知包名。

例如:使用logcat,得到如下log;

...  ...

11-08 16:13:28.060  1477  1477 E WindowService: Send default show!
11-08 16:13:28.065   540  1127 I ActivityManager: START u0 {cmp=com.miren.dvr/com.miren.view.Sci_MainActivity} from uid 10025 on display 0
11-08 16:13:28.065   540  1127 D PackageManager: [isApkLocateInSystemDir] codePath:/data/app/com.miren.dvr-1
11-08 16:13:28.065   540  1127 W ActivityManager: startActivity called from finishing ActivityRecord{1cf36c4 u0 com.miren.dvr/com.miren.view.SplashActivity t29 f}; forcing Intent.FLAG_ACTIVITY_NEW_TASK fo}
11-08 16:13:28.200  1477  1477 E WindowService: Send default show!

... ...

從以上資訊,得知包名是 com.miren.dvr/com.miren.view.Sci_MainActivity

則,執行時的命令為:

am start com.miren.dvr/com.miren.view.Sci_MainActivity

第三種情況:使用 pm 和 dumpsys命令得知

      這種情況下,只有一個apk,也沒有開啟使用過,則首先使用 pm list package

列出全部的包名,在這些包名中找出和apk相似的包。com.miren.dvr

      然後使用命令 dumpsys package com.miren.dvr 列出包的資訊。

在包的資訊中,有如下資訊:

            Activity Resolver Table:
               Non-Data Actions:
                 android.intent.action.MAIN:
                 9d1b3ed com.miren.dvr/com.miren.view.SplashActivity

       這樣就找到了需要啟動的包和activity。

        am start com.miren.dvr/com.miren.view.SplashActivity
--------------------- 
作者:藍白天際線 
來源:CSDN 
原文:https://blog.csdn.net/u011006622/article/details/78480520 
版權宣告:本文為博主原創文章,轉載請附上博文連結!