2016-01-06 45 views
0

我試圖在一個活動中保存未接呼叫的計數,並在另一個活動中讀取它們。 月1日活動:使用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(); 


    } 

} 

在工作的敬酒,我知道來電者的號碼,但我不能保存的計數和在2個活動閱讀:

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

回答

1

在以下線,

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

可改爲

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

或者,只需簡單地加1。

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

謝謝你的工作! –

0

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