You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 13无法通过命令行启动Activity问题求助

解决Android 13中通过ADB带自定义参数启动Activity的问题

问题分析

你原ADB命令存在参数错误,且Android 13对组件导出规则、Intent解析的严格性有提升,导致命令执行失败:

  • 原命令包含两个无意义的-d参数,第一个-d未指定对应数据值,Android 13对这类非法参数容错性更低,会干扰Intent正常构造。
  • 若应用targetSdkVersion >= 31,AndroidManifest.xml中未显式设置Activity的android:exported="true",即使显式指定组件启动,系统也会拒绝访问,报错信息会误导为“Activity类不存在”。

解决办法

1. 修正ADB命令参数

移除多余的-d,使用正确的显式启动命令传递自定义字符串参数:

adb shell am start -n com.mypackage/com.mypackage.MyActivity --es myvariable1 "myvalue1" --es myvariable2 "myvalue2"

2. 确保Activity已正确导出

检查AndroidManifest.xml中目标Activity的声明,必须显式添加android:exported="true"(适用于targetSdkVersion >= 31的情况):

<activity
    android:name=".MyActivity"
    android:exported="true">
    <!-- 保留原有配置,比如主Activity的LAUNCHER category -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

3. 自定义Action启动(可选,更规范的方式)

如果需要更灵活的启动方式,可给Activity添加自定义Action的Intent Filter,无需依赖VIEW Action和Scheme:
在AndroidManifest.xml中配置:

<activity
    android:name=".MyActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="com.mypackage.action.START_MY_ACTIVITY" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

对应的ADB启动命令:

adb shell am start -a com.mypackage.action.START_MY_ACTIVITY -n com.mypackage/com.mypackage.MyActivity --es myvariable1 "myvalue1" --es myvariable2 "myvalue2"

内容的提问来源于stack exchange,提问作者Perihan Mirkelam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:32:16