アプリの基本的な考え方は次のとおりです。
1) BroadcastReceiver
、SMS を受信
2) SMS を受信すると、別の SMS を送信する別のアクティビティが呼び出されます。
問題はBroadcastReceiver
、他のアクティビティ (SMSMessaging) を呼び出すと、そのonCreate
メソッドが何度も呼び出されるため、SMS が何度も送信され続けることです。私のコードは以下です、助けてください!
これは私の BroadcastReciever クラスです:
package com.example.testing;
import java.util.Arrays;
import java.util.List;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle bundle = intent.getExtras();
SmsMessage[] recievedMsgs = null;
String str = "";
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
recievedMsgs = new SmsMessage[pdus.length];
for (int i = 0; i < recievedMsgs.length; i++) {
recievedMsgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += "SMS from " +
recievedMsgs[i].getOriginatingAddress() +
" :" +
recievedMsgs[i].getMessageBody().toString();
}
try {
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
Intent i = new Intent(context,SMSMessaging.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Toast.makeText(context,"Yahoo",Toast.LENGTH_SHORT).show();
} catch (Exception e) {
}
}
}
}
これは私の SMSMessaging クラスです:
package com.example.testing;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class SMSMessaging extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMSMessaging.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage("03331234567", null, "auto sending ", pi, null);
finish();
}
}