web-dev-qa-db-ja.com

インテントを介してSMSを送信します

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は電話番号です。

63
Ata

この機能は1つのブログから開発しました。 SMSを送信するには2つの方法があります。

  1. ネイティブSMS composerを開きます
  2. メッセージを書いてAndroidアプリケーションから送信します

これは第一の方法のコードです。

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); 
      } */  
 }

注:-この方法では、AndroidManifest.xmlファイル内でSEND_SMS権限は必要ありません。

2番目の方法については、これを参照してください BLOG 。ここから適切な説明を見つけることができます。

これがあなたを助けることを願っています...

76
Prem
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);  
48
Bao Le

次のようなインテントを作成します。

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);
30
Shan Xeeshi

このコードを試してください。それが動作します

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
Vipul Shah

これが仕事であることを願って、これは私のアプリで働いています

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

次のようにインテントを作成します。

   Uri uriSms = Uri.parse("smsto:1234567899");   
   Intent intentSMS = new Intent(Intent.ACTION_SENDTO, uriSms);   
   intentSMS.putExtra("sms_body", "The SMS text");   
   startActivity(intentSMS); 
1
bhoomika
/**
 * 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);
    }
}
1
Dhaval Patel

これは、SMSManagerを使用した別のソリューションです。

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

特定のメッセージが必要な場合は、これを使用します。

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);
0
theeman05
  1. マニフェスト許可(「アプリケーション」の前後に配置できます)
 uses-permission Android:name="Android.permission.SEND_SMS"/>
  1. たとえば、ボタンを作成し、(このスレッドでPremによって以前に記述されたように)以下のコードを記述し、以下のphone_Numberを実際の番号に置き換えます。
startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "phone_Number", null)));
0
Kerelos