Подтвердить что ты не робот

Отправить смс через намерение

Я хочу отправить SMS с помощью намерения, но когда я использую этот код, он перенаправляет меня на неправильный контакт:

Intent intentt = new Intent(Intent.ACTION_VIEW);         
intentt.setData(Uri.parse("sms:"));
intentt.setType("vnd.android-dir/mms-sms");
intentt.putExtra(Intent.EXTRA_TEXT, "");
intentt.putExtra("address",  phone number);
context.startActivity(intentt);

Зачем?

Кроме того, я знаю способ следить за отправкой SMS, но я не знаю, как этот код:

Starting activity: Intent { 
   act=android.intent.action.SENDTO dat=smsto:%2B**XXXXXXXXXXXX** flg=0x14000000    
   cmp=com.android.mms/.ui.ComposeMessageActivity }

где XXXXXXXXXXXX - номер телефона.

4b9b3361

Ответ 1

Я разработал эту функциональность из одного блога. Есть 2 способа отправки смс.

  1. Откройте родной SMS композитор
  2. напишите ваше сообщение и отправьте из вашего приложения Android

Это код 1-го метода.

main.xml

<?xml version="1.0" encoding="utf-8"?>  
    <RelativeLayout  
        android:id="@+id/relativeLayout1"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        xmlns:android="http://schemas.android.com/apk/res/android">  

            <Button  
                android:id="@+id/btnSendSMS"  
               android:layout_height="wrap_content"  
               android:layout_width="wrap_content"  
               android:text="Send SMS"  
               android:layout_centerInParent="true"  
               android:onClick="sendSMS">  
           </Button>  
   </RelativeLayout>

Деятельность

public class SendSMSActivity extends Activity {  
     /** Called when the activity is first created. */  
     @Override  
     public void onCreate(Bundle savedInstanceState) {  
         super.onCreate(savedInstanceState);  
         setContentView(R.layout.main);  
      }  

     public void sendSMS(View v)  
     {  
         String number = "12346556";  // The number on which you want to send SMS  
         startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null)));  
     }  
    /* or 
     public void sendSMS(View v) 
      { 
     Uri uri = Uri.parse("smsto:12346556"); 
         Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
         it.putExtra("sms_body", "Here you can set the SMS text to be sent"); 
         startActivity(it); 
      } */  
 }

ПРИМЕЧАНИЕ. - В этом методе вам не требуется разрешение SEND_SMS внутри файла AndroidManifest.xml.

Для 2-го метода обратитесь к этому блогу. Вы найдете хорошее объяснение здесь.

Надеюсь, что это поможет вам...

Ответ 2

Uri uri = Uri.parse("smsto:YOUR_SMS_NUMBER");   
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);   
intent.putExtra("sms_body", "The SMS text");   
startActivity(intent);  

Ответ 3

Создайте намерение так:

Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address","your desired phoneNumber");         
smsIntent.putExtra("sms_body","your desired message");
startActivity(smsIntent);

Ответ 4

Попробуйте этот код. Он будет работать

Uri smsUri = Uri.parse("tel:123456");
Intent intent = new Intent(Intent.ACTION_VIEW, smsUri);
intent.putExtra("sms_body", "sms text");
intent.setType("vnd.android-dir/mms-sms"); 
startActivity(intent);

Надеюсь, это поможет вам.

Ответ 5

Надеюсь, что это работа, это работает в моем приложении

SmsManager.getDefault().sendTextMessage("Phone Number", null, "Message", null, null);

Ответ 6

/**
 * Intent to Send SMS
 * 
 *
 * Extras:
 *
 * "subject"
 *      A string for the message subject (usually for MMS only).
 * "sms_body"
 *      A string for the text message.
 *  EXTRA_STREAM
 *      A Uri pointing to the image or video to attach.
 *
 *  For More Info:
 *  https://developer.android.com/guide/components/intents-common#SendMessage
 *
 * @param phoneNumber on which SMS to send
 * @param message text Message to send with SMS
 */
public void startSMSIntent(String phoneNumber, String message) {
    Intent intent = new Intent(Intent.ACTION_SENDTO);
    // This ensures only SMS apps respond
    intent.setData(Uri.parse("smsto:"+phoneNumber));
    intent.putExtra("sms_body", message);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

Ответ 7

Создайте Намерение как это:

   Uri uriSms = Uri.parse("smsto:1234567899");   
   Intent intentSMS = new Intent(Intent.ACTION_SENDTO, uriSms);   
   intentSMS.putExtra("sms_body", "The SMS text");   
   startActivity(intentSMS); 

Ответ 8

Это другое решение, использующее SMSManager:

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("PhoneNumber-example:+989147375410", null, "SMS Message Body", null, null);

Ответ 9

Я использовал этот код для отправки SMS.

String phoneNumber="000000000000";
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + phoneNumber));
intent.putExtra("address", phoneNumber);
intent.putExtra("sms_body", smsContent);
startActivityForResult(intent,RESULT_CODE);

это правильно отправит смс

Но у меня была проблема с onActivityResult(), код результата всегда получает 0, я не знаю, как решить эту проблему, и как я узнаю, что SMS отправлено или нет?

Ответ 10

curl -X POST http://textita.com/text \
       --data-urlencode phone='9087938341' \
       --data-urlencode message='Hello world' \
       -d key=textita

Ответ 11

Если вы хотите определенное сообщение, используйте это:

String phoneNo = "";//The phone number you want to text
String sms= "";//The message you want to text to the phone

Intent smsIntent = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", phoneNo, null));
smsIntent.putExtra("sms_body",sms);
startActivity(smsIntent);

Ответ 12

  1. Разрешение на манифест (вы можете поставить его после или перед "приложением")
 uses-permission android:name="android.permission.SEND_SMS"/>
  1. например, сделайте кнопку и напишите приведенный ниже код (как было написано ранее Prem в этой теме) и замените указанный ниже номер телефона на реальный номер, он будет работать:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "phone_Number", null)));

Ответ 13

Добавьте try-catch, иначе телефоны без сима вылетят.

void sentMessage(String msg) {
    try {
        Intent smsIntent = new Intent(Intent.ACTION_VIEW);
        smsIntent.setType("vnd.android-dir/mms-sms");
        smsIntent.putExtra("sms_body", msg);
        startActivity(smsIntent);
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, "No SIM Found", Toast.LENGTH_LONG).show();
    }
}

Ответ 14

попробуйте этот код. Он будет работать

    Intent intent = new Intent(this, sendSMS.class);
    intent.putExtra("key_1",values(String SMS meg));
    intent.putExtra("key_2",values(String mobile No));
    startActivity(intent);

    sendSMS Class in
        {
            String msg = getIntent().getStringExtra("key_1", 0)
            String no = getIntent().getStringExtra("key_2", 0)   
            // String no = "5556";

            PendingIntent SendPI = PendingIntent.getBroadcast(this,0, new Intent(), 0);
            SmsManager smsManager = SmsManager.getDefault();                      
            smsManager.sendTextMessage(no,null,msg, SendPI, null);
        }

to try to send sms this way