使用sharedpreferences保存和增加调用

时间:2016-01-06 14:34:43

标签: android sharedpreferences

我正在尝试在一个活动中保存未接来电的数量,并在另一个活动中读取它们。 第一项活动:

public class CallReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {


    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
            TelephonyManager.EXTRA_STATE_IDLE)
            || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
            TelephonyManager.EXTRA_STATE_OFFHOOK)) {




        // get the phone number
        String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

        // This code will execute when the call is disconnected
        Toast.makeText(context, "missed call number " + incomingNumber, Toast.LENGTH_SHORT).show();

        SharedPreferences s = context.getSharedPreferences("s" ,Context.MODE_PRIVATE);
        SharedPreferences.Editor e = s.edit();
        int count= s.getInt("counter" , 1);
        e.putInt("counter",count++);
        e.commit();


    }

}

工作中的祝酒词,我知道来电者的号码,但我无法保存计数并在第二项活动中阅读:

SharedPreferences s = getSharedPreferences("s" ,Context.MODE_PRIVATE);
        int calls = s.getInt("counter" , 0 );

2 个答案:

答案 0 :(得分:1)

在下面一行,

    e.putInt("counter", count++); // post increment is error-prone.

可以更改为

    e.putInt("counter", ++count);

或者,只需添加1即可。

    e.putInt("counter", count + 1);

答案 1 :(得分:0)

在保存和检索值时使用相同的上下文。使用getApplicationContext()。