我正在使用BroadcastReceiver
向我的主活动发送有关电池充电状态的信息。应用程序使用SharedPreferences
发送数据。
问题是当我的手机连接或断开充电时。应用程序已崩溃。我认为这是SharedPreferences
的问题。我说得对吗?我应该做些什么才能做好工作?
这是我的BroadcastReceiver
类:
public class PowerConnectionReceiver extends BroadcastReceiver {
SharedPreferences pref;
public void onReceive(Context context, Intent intent) {
SharedPreferences.Editor prefEditor = pref.edit();
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
prefEditor.putBoolean("isCharging", false).commit();
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
}
}
这是主要活动:
SharedPreferences pref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pref = getSharedPreferences("StatusOfCharging", Activity.MODE_PRIVATE);
Boolean isCharging = pref.getBoolean("isCharging", false);
if (isCharging == true){
Toast.makeText(this, "work", Toast.LENGTH_LONG).show();
}else
Toast.makeText(this, "Don't work", Toast.LENGTH_LONG).show();
}
感谢您的回答
初始化类似的pref
pref = context.getSharedPreferences("StatusOfCharging",context.MODE_PRIVATE);
在onReceive()
内部的BroadcastReceiver
中。。