2013-04-03 43 views
1

我在向「setComponentEnabledSetting()」提供正確屬性時遇到問題 - 我得到IllegalAttributeException,說該.class無法找到或不存在。啓用或禁用已註冊的接收器

接收者在應用程序清單中聲明,接收者處理程序存儲在一個單獨的包(com.app.receivers)中。在清單文件中,它們的名稱屬性是「.receivers.OnBoot」。到目前爲止,我對這個設置沒有任何問題 - 接收器正在工作等,但現在我試圖爲用戶添加一個功能來啓用/禁用接收器。

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

我已經嘗試了很多不同的替代方法來獲取有效的ComponentName,但都失敗了。 如何正確引用此接收器,以便setComponentEnabledSetting()可以找到它?

+0

你嘗試過它作爲'單元名REC =新的組件名稱(「com.app.receivers」 ,「com.app.receivers.OnBoot」); ...'? –

+0

噢,我想有時你必須在發現問題之前發佈一個問題:)是的,當然,....我不知道這個.class從哪裏來,並沒有關注它。當然,它正在工作:)請張貼答案,以便我可以接受你的努力。 – hpet

回答

0

只使用BroadcastReceiver類名稱和完整的包名作爲第二個參數爲ComponentName,而不是OnBoot.class嘗試,因爲:

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