为什么 onReceive() 不断被调用?
Why onReceive() keeps getting called?
我希望我的应用程序在收到短信时发送短信,我成功了。问题是一旦收到 1 条短信,它就不会停止发送它们。
好像一直在调用 onReceive() 方法。
我希望它每收到 1 条短信就发送 1 条短信。
/******************************************** **********************************/
广播接收器class
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);
}
}
/******************************************** *********************************/
/******************************************** *******************************/
主要活动
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>
感觉问题很明显,但我找不到其他人有这个问题。
解决了我的问题!事实证明这是我的愚蠢错误,我在我的 phone(真实设备)上测试应用程序并且我没有第二个 phone 来发送 "request" 短信。所以我用我自己的 phone 发送初始短信和应用程序,工作正常,发回一个,但这意味着它会向自己发送一条短信,一旦收到第二条短信,它就会继续发送另一条.. .它自己进入了一个很好的循环。
我希望我的应用程序在收到短信时发送短信,我成功了。问题是一旦收到 1 条短信,它就不会停止发送它们。
好像一直在调用 onReceive() 方法。
我希望它每收到 1 条短信就发送 1 条短信。
/******************************************** **********************************/
广播接收器class
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);
}
}
/******************************************** *********************************/
/******************************************** *******************************/
主要活动
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>
感觉问题很明显,但我找不到其他人有这个问题。
解决了我的问题!事实证明这是我的愚蠢错误,我在我的 phone(真实设备)上测试应用程序并且我没有第二个 phone 来发送 "request" 短信。所以我用我自己的 phone 发送初始短信和应用程序,工作正常,发回一个,但这意味着它会向自己发送一条短信,一旦收到第二条短信,它就会继续发送另一条.. .它自己进入了一个很好的循环。