我明天有一个很大的作业,但我坚持一件事。基本上,我需要做的是计算传入手机的短信数量。例如,如果某人向我发送一条短信,并且说“ A”程序将对其进行计数,并弹出一条吐司消息,说明:“答案A”:1,而当另一个SMS出现时,它将发送给“答案A”:2。我做了一些代码工作,但是即使我发送了20条“ A”短信,它也显示为1。我认为它会在计算完第一个SMS后重设自身。有我的密码。

public class SmsAlici extends BroadcastReceiver {
   public int sayacA = 0, sayacB = 0, sayacC = 0, sayacD = 0;
    public int toplam = 0;


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

    {
            SmsMessage[] mesaj = Telephony.Sms.Intents.getMessagesFromIntent(intent);
            SmsMessage sms = mesaj[0];
            String gonderen = sms.getOriginatingAddress();
            String sms_icerik = sms.getMessageBody();


            sms_icerik = sms_icerik.trim();


            if (sms_icerik.equalsIgnoreCase("A")) {
                sayacA++;
                toplam++;
                Toast.makeText(context, "A Cevabı:" + Integer.toString(sayacA), Toast.LENGTH_LONG).show();

            } else if (sms_icerik.equalsIgnoreCase("B")) {
                sayacB++;
                toplam++;
                Toast.makeText(context, "B Cevabı:" + Integer.toString(sayacB), Toast.LENGTH_LONG).show();
            } else if (sms_icerik.equalsIgnoreCase("C")) {
                sayacC++;
                toplam++;
                Toast.makeText(context, "C Cevabı:" + Integer.toString(sayacC), Toast.LENGTH_LONG).show();

            } else if (sms_icerik.equalsIgnoreCase("D")) {
                sayacD++;
                toplam++;
                Toast.makeText(context, "D Cevabı: " + Integer.toString(sayacD), Toast.LENGTH_LONG).show();


            }


            if (toplam == 20) {
                Toast.makeText(context, "A Cevabı Toplamı: " + Integer.toString(sayacA), Toast.LENGTH_LONG).show();
                Toast.makeText(context, "B Cevabı Toplamı: " + Integer.toString(sayacB), Toast.LENGTH_LONG).show();
                Toast.makeText(context, "C Cevabı Toplamı: " + Integer.toString(sayacC), Toast.LENGTH_LONG).show();
                Toast.makeText(context, "D Cevabı Toplamı: " + Integer.toString(sayacD), Toast.LENGTH_LONG).show();
                toplam = 0;

最佳答案

收到每条短信后,可能是android正在实例化您的类的新实例。

更改:

public int sayacA = 0, sayacB = 0, sayacC = 0, sayacD = 0;


至 :

public static int sayacA = 0, sayacB = 0, sayacC = 0, sayacD = 0;


但是,最好的解决方案是将这些值保留在SharedPreferences上。这样,您可以防止在应用程序被杀死时丢失数据。

看一下:SharedPreferences

07-25 22:19