【问题标题】:How to determine the expected arguments for an Android Intent?如何确定 Android Intent 的预期参数?
【发布时间】:2010-07-07 17:45:01
【问题描述】:

Android 在基础操作系统和包中提供了很多 Intent。如何确定要发送到 Intent 的参数(即 Data、Extras 等)?例如,您可以使用此意图打开设置应用程序以显示特定应用程序的应用程序信息:

String pkgname = "com.example.application"; // whatever the app is

Intent it = new Intent(Intent.ACTION_VIEW);
it.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
it.putExtra("com.android.settings.ApplicationPkgName", pkgname);
it.putExtra("pkg", pkgname);

问题是我只知道那些Extras 是对的,因为我从别人的源头窃取了它们。我怎么会自己发现呢?

即使查看源代码,我也可以看到要使用的 ClassName,因为它在 AndroidManifext.xml 中作为一个动作,但我没有看到任何指向“pkg”的东西,这显然是合适的 @987654323 @ 与 Froyo 一起使用,对于以前的版本更长。

【问题讨论】:

  • 因为你的问题How could I have found that out by myself?,我投了赞成票。我对使用 Intents 有同样的疑问。

标签: android android-intent


【解决方案1】:

我如何确定参数(即 是,数据,附加等)发送到 意图?

如果没有记录,请不要使用它。您显示的代码非常脆弱,可能无法与任何新的 Android 版本一起使用。如果设备制造商决定(出于某种奇怪的原因)替换“设置”应用程序的该部分,它甚至可能在某些设备上失败。

【讨论】:

  • 很好的建议,但假设我想忽略它,为了做一些看似不可能的事情,然后呢?我应该寻找什么?
  • 另外,AndroidManifest.xml 中未列出是否意味着文档?
  • “另外,AndroidManifest.xml 中未列出是否意味着文档?”当然不是。将东西放入清单是 Android 的技术要求。这并不意味着该应用程序的作者对使用这些东西的随机第三方应用程序感兴趣。文档是应用程序开发人员告诉其他人支持的 API 的方式。如果开发者希望你直接调用它的活动,开发者会告诉你怎么做。对于 Android 应用程序(例如,设置),开发人员文档与源代码非常不同。
猜你喜欢
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多