我已經遍佈各地搜索,但我仍然無法完成這項工作。即使在服務上,它也可以在任何地方工作,但不在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