为什么onReceive()不断被调用?

时间:2015-07-13 22:40:48

标签: android sms broadcastreceiver

我希望我的应用在收到短信时发送短信,然后我就开始工作了。问题是,一旦收到1条短信,它就不会停止发送。

就像onReceive()方法一样被调用。

我希望每收到一条短信发送1条短信。

/ ********************************************** ********* /

BroadcastReceiver类

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;

public class SMSListener extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage("031130130", null, "sms text", null, null);
    }
}

/ ********************************************** ********* /

/ ********************************************** ******** /

MainActivity

broadcastReceiver = new SMSListener() {
            @Override
            public void onReceive(Context context, Intent intent) {
                if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED") && intent.getExtras() != null){
                    try{
                        doStuffsIfStolenOnce();
                    }catch (Exception e){
                        Toast.makeText(Running.this,"Something went wrong:" + e.getMessage(),Toast.LENGTH_LONG).show();
                    }
                }
            }
        };
        IntentFilter myFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
        registerReceiver(broadcastReceiver, myFilter);

/ ********************************************** ********* /

在清单

中添加了意图过滤器和权限
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />

<receiver android:name=".SMSListener">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
</receiver>

感觉问题显而易见,但我无法找到其他人遇到此问题。

1 个答案:

答案 0 :(得分:0)

解决了我的问题!事实证明这是我的愚蠢错误,我正在测试手机上的应用程序(真实设备),我没有第二部手机发送“请求”短信。所以我使用自己的手机发送初始短信和应用程序,工作正常,发回一个,但这意味着它发送短信给自己,一旦收到第二个短信,它继续发送另一个...它得到了本身就是一个很好的循环。