何时在Android中使用ComponentName的构造函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我对Android中的ComponentName类有点困惑。

有不同的方法可以访问组件名称对象,但我不知道何时使用哪个...以及为什么!

例:

  • 应用程序包是 de.zordid.sampleapp
  • 但小部件提供者类是 de.zordid.sampleapp.widget.WidgetProvider

我运用下面的代码 :

ComponentName cn = new ComponentName("de.zordid.sampleapp.widget",
    "WidgetProvider");

我得到了这个组件信息:ComponentInfo{de.zordid.sampleapp.widget/WidgetProvider},但我无法使用它 - 组件是未知的!但是JavaDoc说我应该在包中提供包和类 - 这就是我所做的,是不是?

还有运用:

ComponentName cn = new ComponentName(context, WidgetProvider.class);

甚至还有另一种获取ComponentName的方法 - 通过上下文和字符串。哪一个应该用在何时何地?

提问于
用户回答回答于

ComponentName带两个Strings 的构造函数可以用来引用另一个应用程序中的组件。但是,第一个参数不是该类的包名; 它是应用程序的包名称---该应用程序packagemanifest元素的属性AndroidManifest.xml。所以你的第一个例子应该是:

ComponentName cn = new ComponentName("de.zordid.sampleapp",
    "de.zordid.sampleapp.widget.WidgetProvider");

该构造函数当然可以用于在你自己的应用程序中引用组件,但是由于你已经拥有了Context自己的应用程序,所以你可以使用它并使用其他构造函数。

用户回答回答于

你可以在BroadcastReceiver中使用这样的内容:

ComponentName smsReceiver = new ComponentName(this, SMSReceiver.class);

扫码关注云+社区