2014-01-15 3 views
-1

Когда я использую следующий код:Отправка смс в андроиде

String phoneNumber="0527276513"; 

Uri uri = Uri.parse("smsto:" + phoneNumber.toString()); 

Intent smsSIntent = new Intent(Intent.ACTION_SENDTO, uri); 

String smsBody="hii"; 

smsSIntent.putExtra("sms_body", smsBody.toString()); 

startActivity(smsSIntent); 

Код открывает приложение по умолчанию для отправки SMS на моем телефоне с телом SMS, но сообщение не присылает.

Как отправить SMS динамически?

ответ

1

Это просто. Перед внесением каких-либо изменений, пожалуйста, обновите ваш манифест, добавив следующую строку:

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

И в вашем методе/функция используется следующий код:

String phoneNumber = "myphonenumber"; 
String message = "mymessage"; 

SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage(phoneNumber, null, message, null, null); 
0

Полный класс для отправки смс из приложения по умолчанию, а также как ваше приложение, убедитесь, принять следующее разрешение в андроида файле манифеста

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

Вот класс ...

public class SMSSender{ 

private static final Uri sentURI = Uri.parse("content://sms/sent"); 

public static void sendSMS(final Context context, final String phoneNumber, final String message) { 
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 

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

    PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, 
      new Intent(DELIVERED), 0); 

    // ---when the SMS has been sent--- 
    context.registerReceiver(new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      context.unregisterReceiver(this); 
      switch (getResultCode()) { 
      case Activity.RESULT_OK: 
       ContentValues values = new ContentValues(); 
       values.put("address", phoneNumber);// txtPhoneNo.getText().toString()); 
       values.put("body", message); 
       context.getContentResolver().insert(sentURI, values); 
       Toast.makeText(context, "SMS sent", Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
       Toast.makeText(context, "Generic failure", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NO_SERVICE: 
       Toast.makeText(context, "No service", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NULL_PDU: 
       Toast.makeText(context, "Null PDU", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_RADIO_OFF: 
       Toast.makeText(context, "Radio off", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      } 

     } 
    }, new IntentFilter(SENT)); 

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

     } 


    }, new IntentFilter(DELIVERED)); 

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

public static void sendMessageByDefaultApp(final Context context, final String phoneNumber, final String message) { 
    Intent sendSmsIntent = (new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" 
      + phoneNumber))); 
    sendSmsIntent.putExtra("sms_body", message);   
    context.startActivity(sendSmsIntent); 
} 

} 
0

Обратите внимание, что на устройствах Android 4.4 (KitKat) и выше только SMS-приложение по умолчанию может отправлять текстовые сообщения за blog post.

Предполагая, что ваше приложение не является полноценным приложением для замены SMS, подход, который вы наметили, является правильным, чтобы ваше приложение работало на всех версиях Android.

Смежные вопросы