1

我在为“setComponentEnabledSetting()”提供正确属性时遇到问题 - 我收到 IllegalAttributeException 说 .class 无法找到或不存在。

接收器在应用程序清单中声明,接收器处理程序存储在单独的包(com.app.receivers)中。在清单文件中,它们的名称属性是“.receivers.OnBoot”。到目前为止,我对这个设置没有任何问题 - 接收器正在工作等,但现在我正在尝试为用户添加一个启用/禁用接收器的功能。

ComponentName rec = new ComponentName("com.app.receivers", "OnBoot.class");
getPackageManager().setComponentEnabledSetting(rec, ....);

我尝试了许多不同的替代方法来获得有效的 ComponentName,但都失败了。如何正确引用此接收器以便 setComponentEnabledSetting() 找到它?

4

1 回答 1

0

只需使用BroadcastReceiver带有完整包名的类名作为第二个参数,ComponentName而不是OnBoot.class尝试如下:

ComponentName rec = new ComponentName("com.app.receivers",
                                            "com.app.receivers.OnBoot");
getPackageManager().setComponentEnabledSetting(rec, ....);
于 2013-04-03T16:32:33.173 回答