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

调试第三方App:如何通过ADB调用带多参数的ContentProvider方法?

正确调用第三方ContentProvider自定义方法的ADB方案

问题根源分析

你之前的两个命令都存在参数匹配错误:

  • 第一种--arg方式:错误地将字符串"Hello"作为第一个Uri类型参数传入,与方法定义的参数类型不匹配,导致调用失败。
  • 第二种--extra方式:--extra用于传递Bundle类型参数,但你的自定义方法是直接接收Uri和String参数,并非从Bundle中读取,因此该方式完全不适用。

正确的ADB调用命令

根据方法public int myMethod(Uri uri, String name)的参数类型和顺序,正确的调用命令需要严格匹配参数类型:

adb shell content call --uri content://my_provider_url/ --method myMethod --arg content://my_provider_url/ --arg Adam

参数说明

  • --uri content://my_provider_url/:指定目标ContentProvider的基础Uri,用于系统定位到该Provider。
  • --arg content://my_provider_url/:按方法参数顺序,第一个参数是Uri类型,直接传入合法的Provider Uri即可(如果方法需要特定路径的Uri,可修改此处)。
  • --arg Adam:第二个参数是String类型,传入要测试的字符串值。

额外验证步骤

如果仍返回Result:Null,可执行以下操作排查:

  • 确认方法的参数类型、顺序是否完全正确,避免参数位置搞反。
  • 通过adb shell dumpsys package <目标App包名>查看该App的ContentProvider信息,验证exported状态为true,且authority与你使用的content://my_provider_url/一致。
  • 尝试更换不同的Uri路径(如content://my_provider_url/test)作为第一个参数,部分方法可能需要特定路径的Uri触发逻辑。

内容的提问来源于stack exchange,提问作者A. Abramov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:45:09