【发布时间】:2016-08-27 06:03:30
【问题描述】:
我有一个广播接收器,它在我的清单文件中注册为“已禁用”..
它侦听基于系统的广播,然后触发.. 但我不希望我的 BroadcastReceiver 实际启用并侦听,直到我告诉它(例如,我的应用程序中的用户设置首选项使其启用) ..
从我通过搜索收集到的内容中,我发现了以下 2 个可能有效的方法:
Context.getApplicationContext().registerReceiver
(LocationReceiver.class,
"android.intent.action.PROVIDER_CHANGED");
和
setComponentEnabledSetting
(LocationReceiver.class,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
0);
但他们都没有工作..
对于第一个,它说“不能从静态上下文引用非静态方法 getApplicationContext,而第二个我认为我可能没有正确引用第一个参数 (ComponentName)。
谁能给我一些见解?
谢谢!
【问题讨论】:
-
对于第一个选项,删除类名(这将使其成为非静态的)。例如:getApplicationContext()... 而不是 Context.getApplicationContext() ...
-
我试过你说的......
getApplicationContext().registerReceiver(LocationReceiver.class, "android.intent.action.PROVIDER_CHANGED");但现在整个参数都用红色下划线..悬停它说这个...... registerReceiver(android.content.BroadcastReceiver, android .content.IntentFilter) 在 Context 中不能应用到 .... yada yada。
标签: java android android-activity broadcastreceiver android-manifest