2011-05-10 25 views
7

Android cep telefonuna SMS göndermek için aşağıdaki kodu kullanıyorum. Ama SMS'u gönderdiğim herhangi bir numaraya gönderirseniz. Sorun ne olabilir?Android'de SMS gönderme

package SMSApp.com; 

import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
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 SMS extends Activity { 
    /** Called when the activity is first created. */ 

    Button btnSendSMS; 
    EditText txtPhoneNo; 
    EditText txtMessage; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btnSendSMS = (Button) findViewById(R.id.btnSendSMS); 
     txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); 
     txtMessage = (EditText) findViewById(R.id.txtMessage); 

     btnSendSMS.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       String phoneNo = txtPhoneNo.getText().toString(); 
       String message = txtMessage.getText().toString(); 
       if (phoneNo.length()>0 && message.length()>0) 
        sendSMS(phoneNo, message); 
       else 
        Toast.makeText(getBaseContext(), 
         "Please enter both phone number and message.", 
         Toast.LENGTH_SHORT).show(); 
      } 

      /*private void sendSMS(String phoneNo, String message) { 
       // TODO Auto-generated method stub 

       PendingIntent pi = PendingIntent.getActivity(SMS.this, 0, new Intent(SMS.this, SMS.class), 0); 
        SmsManager sms = SmsManager.getDefault(); 
        sms.sendTextMessage(phoneNo, null, message, pi, null); 
      }*/ 

      private void sendSMS(String phoneNumber, String message) 
      { 
       String SENT = "SMS_SENT"; 
       String DELIVERED = "SMS_DELIVERED"; 

       PendingIntent sentPI = PendingIntent.getBroadcast(SMS.this, 0, 
        new Intent(SENT), 0); 

       PendingIntent deliveredPI = PendingIntent.getBroadcast(SMS.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)); 

       //---when the SMS has been delivered--- 
       registerReceiver(new BroadcastReceiver(){ 
        @Override 
        public void onReceive(Context arg0, Intent arg1) { 
         switch (getResultCode()) 
         { 
          case Activity.RESULT_OK: 
           Toast.makeText(getBaseContext(), "SMS delivered", 
             Toast.LENGTH_SHORT).show(); 
           break; 
          case Activity.RESULT_CANCELED: 
           Toast.makeText(getBaseContext(), "SMS not delivered", 
             Toast.LENGTH_SHORT).show(); 
           break; 
         } 
        } 
       }, new IntentFilter(DELIVERED)); 

       SmsManager sms = SmsManager.getDefault(); 
       sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
      } 
     }); 
    } 
} 
+0

Benzer bir şey yapıyorum BURADA !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

cevap

12

Gerçekten neden sendSMS yöntemini yerleştirirsiniz anlamıyorum - kod benim için çalışıyor. (

package SMSApp.com; 
import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
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 SMS extends Activity { 
    /** Called when the activity is first created. */ 

    Button btnSendSMS; 
    EditText txtPhoneNo; 
    EditText txtMessage; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     btnSendSMS = (Button) findViewById(R.id.btnSendSMS); 
     txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); 
     txtMessage = (EditText) findViewById(R.id.txtMessage); 

     btnSendSMS.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       String phoneNo = txtPhoneNo.getText().toString(); 
       String message = txtMessage.getText().toString(); 
       if (phoneNo.length()>0 && message.length()>0) 
        sendSMS(phoneNo, 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(SMS.this, 0, 
      new Intent(SENT), 0); 

     PendingIntent deliveredPI = PendingIntent.getBroadcast(SMS.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(SMS.this, "SMS sent", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
         Toast.makeText(SMS.this, "Generic failure", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_NO_SERVICE: 
         Toast.makeText(SMS.this, "No service", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_NULL_PDU: 
         Toast.makeText(SMS.this, "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)); 

     //--- When the SMS has been delivered. --- 
     registerReceiver(new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context arg0, Intent arg1) { 
       switch (getResultCode()) 
       { 
        case Activity.RESULT_OK: 
         Toast.makeText(SMS.this, "SMS delivered", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case Activity.RESULT_CANCELED: 
         Toast.makeText(SMS.this, "SMS not delivered", 
           Toast.LENGTH_SHORT).show(); 
         break; 
       } 
      } 
     }, new IntentFilter(DELIVERED)); 

     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
    } 
} 
+0

Alıcı nasıl kaydedilir? –

0

herşey yolunda ise (kod, manifest dosyasında izinleri), açık iki emülatörü pencerelerini: Eğer dosyada belirlenen

<uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 

izni var ise kontrol etmeyi deneyin ve bunun yerine bu kodu deneyin 5554: TestDevice1 ve 5556: TestDevice1) gibi bir şey olacaktır.

Şimdi, eğer uygulamanızı 5554'e yüklüyorsanız, 5556'ya bir mesaj gönderin ve başka bir emülatörde kontrol edin.