我已经遍布各地搜索,但我仍然无法完成这项工作。即使在服务上,它也可以在任何地方工作,但不在Receiver上......有人可以帮助我吗?Android SharedPreferences接收器不工作
SAVE(MainActivity):
SharedPreferences blockerPreferences = getSharedPreferences("XXX", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = blockerPreferences.edit();
(...)
editor.putBoolean("serviceActivated", true).commit();
了RETRIEVE(需要修复):
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//ENABLE OR DISABLE SERVICE
SharedPreferences blockerPreferences = context.getSharedPreferences("XXX", Context.MODE_PRIVATE);
boolean Activate = blockerPreferences.getBoolean("serviceActivated", false);
if (Activate || intent.getBooleanExtra("activateService", true)) {
context.startService(new Intent(context, CallReceiverService.class));
} else {
context.stopService(new Intent(context, CallReceiverService.class));
}
}
}
注意,它的工作在我的活动和服务也一样,它不仅在工作接收器。
谢谢!
不是你的'服务'运行在不同的过程?在多进程模式下访问共享首选项存在很多问题(请参阅更多http://stackoverflow.com/questions/27827678/use-sharedpreferences-on-multi-process-mode),因此这可能是您的问题。 – skywall
嗨@skywall,该接收器由重复闹铃或开机启动。我总是使用相同的应用程序和过程。我不能简单地访问它,总是检索'false',我需要它,因为在启动时它将激活服务,如果'激活'是真的。 – FilipeOS
你能提供你设置'serviceActivated'(分别为'activateService')为真的代码的一部分吗? – skywall