ADB开始活动名称不起作用

时间:2014-08-21 13:27:51

标签: android shell adb

我使用Galaxy Note 3在ADB中丢弃并记录了一些内容。 Logcat给了我以下一行:

    #party pause(  870): onReceive android.intent.action.ACTIVITY_STATE/th.in.siamgame.ggplay.mwcasia/resume

另一个dumpfile告诉我包名是:

    th.in.siamgame.ggplay.mwcasia

我尝试了一些ADB Start命令的变体。

    adb shell am start -n th.in.siamgame.ggplay.mwcasia/th.in.siamgame.ggplay.mwcasia.resume

    adb shell am start -n th.in.siamgame.ggplay.mwcasia/.resume

同时使用

同时执行这两个命令
    -a android.intent.action.ACTIVITY_STATE

我希望你们可以帮助我通过亚行启动该应用程序。

2 个答案:

答案 0 :(得分:3)

该命令的正确语法是:

adb shell am start -n package/.activity

例如:

adb shell am start -n com.example/.ActivityName

似乎resume不是活动的名称。您可以在AndroidManifest.xml中找到主要活动名称(如果您有源代码)。它是具有intent过滤器属性的那个:

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

如果您没有源代码,但有apk文件,您仍然可以使用aapt工具找到它。 aapt位于<android-sdk-path>/build-tools/<version>/aapt。 使用命令aapt l -a filename.apk启动它,您将获得如下输出:

N: android=http://schemas.android.com/apk/res/android
  E: manifest (line=2)
    A: android:versionCode(0x0101021b)=(type 0x10)0xc
    A: android:versionName(0x0101021c)="1.0.1" (Raw: "1.0.1")
    A: package="com.example" (Raw: "com.example")
    E: application (line=8)
      A: android:theme(0x01010000)=@0x7f0d0022
      A: android:label(0x01010001)=@0x7f0b0000
      A: android:icon(0x01010002)=@0x7f020002
      A: android:name(0x01010003)="AppName" (Raw: "AppName")
      A: android:debuggable(0x0101000f)=(type 0x12)0x0
      E: activity (line=15)
        A: android:label(0x01010001)=@0x7f0b0000
        A: android:name(0x01010003)=".MainActivity" (Raw: ".MainActivity")
        A: android:launchMode(0x0101001d)=(type 0x10)0x2
        A: android:configChanges(0x0101001f)=(type 0x11)0xb0
        E: intent-filter (line=21)
          E: action (line=22)
            A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
          E: category (line=25)
            A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
 ... etc ...

您需要"android.intent.action.MAIN""android.intent.category.LAUNCHER"。示例中为.MainActivity

答案 1 :(得分:1)

使用操作MAIN启动您的应用而不是ACTIVITY_STATE。 ACTIVITY_STATE是一个内部系统操作,仅由框架发送:

-a android.intent.action.MAIN