使用Shared Preferences〔android〕在广播和活动之间发送有关收费的数据



我正在使用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中。。

最新更新