一度に複数のエミュレーターを受信するために単一のメッセージを送信する必要があるAndroidアプリを開発していますが、問題は1つのエミュレーターのみがメッセージを受信していることです。これが私のコードです。
パブリッククラスSMSはActivity{を拡張します
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSendSMS = (Button) findViewById(R.id.btn_SendSms); txtPhoneNo = (EditText) findViewById(R.id.edittext_PhoneNumber); txtMessage = (EditText) findViewById(R.id.edittext_MessageBody); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String message = txtMessage.getText().toString(); String phoneNo = txtPhoneNo.getText().toString(); StringTokenizer st=new StringTokenizer(phoneNo,","); while (st.hasMoreElements()) { String tempMobileNumber = (String)st.nextElement(); if(tempMobileNumber.length()>0 && message.trim().length()>0) { sendSMS(tempMobileNumber, message); } else { Toast.makeText(getBaseContext(), "Please enter both phone number and message.", Toast.LENGTH_SHORT).show(); } } } }); } private void sendSMS(String phoneNumber, String message) { String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); //---when the SMS has been sent--- registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS sent", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show(); break; } } } , new IntentFilter(SENT)); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); } }
2 に答える
0
同じマシンで実行されている別のエミュレータインスタンスにSMSメッセージを送信するには、SMSアプリケーションを起動します。ターゲットエミュレータインスタンスのコンソールポート番号(例:5555)をSMSアドレスとして指定します。
この回答はLinuxtopiaガイドに基づいていることに注意してください。
于 2013-03-25T12:09:06.853 に答える
0
エミュレーターIDまたは番号の配列を作成し、sendTextMessageをその配列に配置して、配列内の要素と同じ数のループを実行できます。または、ユーザーが電話番号またはエミュレーター番号をリストに挿入できるUIを使用して、上記と同じ手順を実行できます。sendTextMessageの最初の引数は、SMSを送信する「電話番号」であることに注意してください。ループが繰り返されるたびに、SMSを要件に置き換えるだけです。
于 2013-03-25T13:34:10.363 に答える