แสดงมุมมอง SMS ประกอบใน Android


167

ฉันต้องการส่ง SMS ด้วย Android

ความตั้งใจในการส่ง SMS คืออะไร?

ฉันต้องการแสดงมุมมองการเขียน sms พร้อมข้อความที่กำหนดไว้ล่วงหน้าของฉันในฟิลด์ข้อความ


1
คุณควรอ่านบทความนี้สำหรับเรื่องเต็ม
เหงียนมินห์บินห์

ฉันกำลังทำสิ่งที่คล้ายกันที่นี่ !!! stackoverflow.com/questions/14452808/…
toobsco42

@ toobsco42: ไม่คุณกำลังทำสิ่งที่แน่นอน คุณกำลังส่ง SMS ตัวเองและคำถามนี้เรียกร้องให้ผ่านทางโปรแกรมมาตรฐาน SMS
Jan Hudec

คุณสามารถรองรับอุปกรณ์ Dual-Sim ได้เช่นกันดูได้ที่: stackoverflow.com/a/30677542/2267723
Maher Abuthraa

บทความนี้อธิบายถึง SMS / MMS บน Android ได้ง่ายเพียงแสดงตัวอย่างโค้ดสำหรับการส่ง SMS และรับ SMS: codeproject.com/Articles/1044639/…
Rou1997

คำตอบ:


199

คุณสามารถใช้รหัสต่อไปนี้:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:"
                        + phoneNumber)));

ตรวจสอบให้แน่ใจว่าคุณได้ตั้งphoneNumberหมายเลขโทรศัพท์ที่คุณต้องการส่งข้อความถึง

คุณสามารถเพิ่มข้อความใน SMS ด้วย (จากความคิดเห็น):

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));     
intent.putExtra("sms_body", message); 
startActivity(intent);

87
ขอบคุณสำหรับรหัสของคุณ และฉันต้องการที่จะเพิ่มเพราะฉันต้องใส่ข้อความที่กำหนดไว้ล่วงหน้าของฉัน ฉันได้รับวิธีแก้ไขปัญหานี้เจตนาเจตนา = เจตนาใหม่ (Intent.ACTION_VIEW, Uri.parse ("sms:" + หมายเลขโทรศัพท์)); intent.putExtra ("sms_body", ข้อความ); startActivity (เจตนา);
djk

1
วิธีการตั้งค่า "หมายเลขโทรศัพท์" จากรายชื่อผู้ติดต่อ
Saeed M.

@djk ขอบคุณฉันต้องการอ่านรายชื่อผู้ติดต่อทั้งหมดและต้องการหน้าของตัวเองสำหรับการส่ง SMS พร้อมระบบเติมข้อความอัตโนมัติ แต่ฉันไม่สามารถอ่านรายชื่อผู้สอนที่ดีได้?
คุรุ

ฉันจะใช้วิดเจ็ตเขียน SMS เริ่มต้นสำหรับการทำ เพียงแค่ปล่อยให้หมายเลขโทรศัพท์ว่างเปล่า (เป็นตัวเลือก)
shem

1
สวัสดี ฉันต้องการส่ง SMS เป็นกลุ่ม เช่น 10,000 sms ส่งได้ในคลิกเดียว เป็นไปได้ไหม ? ฉันได้ยิน android ส่ง 30 sms ทุก ๆ 30 นาที ได้โปรดช่วยฉันด้วย
Vrajesh

151

สิ่งนี้ใช้ได้สำหรับฉัน

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
    btnSendSMS.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            sendSMS("5556", "Hi You got a message!");
           /*here i can send message to emulator 5556. In Real device 
            *you can change number*/
        }
    });
}

//Sends an SMS message to another device

private void sendSMS(String phoneNumber, String message) {
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, null, null);
}

คุณสามารถเพิ่มบรรทัดนี้ใน AndroidManifest.xml

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

ลองดูที่นี่

สิ่งนี้อาจเป็นประโยชน์สำหรับคุณ


11
คำถามถามถึงการแสดง SMS ในมุมมองการเขียนแบบมาตรฐาน นี่คือสิ่งที่ตรงกันข้ามตรงข้ามกับการส่ง SMS ด้านหลังของผู้ใช้ใช่ไหม
Jan Hudec

มันล้มเหลวในการส่งข้อความหากมีเครื่องหมายอะโพสโทรฟีอยู่ในนั้น
berserk

39

ลองรหัสด้านล่างแล้วโทรsendSMS("99999999999", "message");เพื่อส่ง SMS ในหมายเลขที่ต้องการ

//---sends an SMS message to another device---
@SuppressWarnings("deprecation")
private void sendSMS(String phoneNumber, String message)
{        
    Log.v("phoneNumber",phoneNumber);
    Log.v("MEssage",message);
    PendingIntent pi = PendingIntent.getActivity(this, 0,
    new Intent(this, **DummyClasshere.class**), 0);                
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, pi, null);        
}

โปรดวางการอนุญาตต่อไปนี้ในAndroidManifest.xmlไฟล์

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

หวังว่ามันจะช่วยได้

อัปเดต จากความคิดเห็น: DummyClasshere.class เป็นกิจกรรมโดยไม่ต้องทำกระบวนการใด ๆ หรือคลาสที่คุณต้องการนำทาง

คุณสามารถใช้ Object.class แทน DummyClasshere.class


บางสิ่งบางอย่างกิจกรรมโดยไม่ต้องทำ process.or อื่นใดระดับที่ต้อง u นำทาง ..
Senthil Mg

ฉันใช้new Intent()และก็ทำเช่นนั้น
Osmium USA

คุณทราบได้อย่างไรว่าส่งข้อความ (SMS)?
Ninja Coding

28

สิ่งนี้จะใช้ได้แน่นอนในการส่งข้อความโดยไม่ใช้ความตั้งใจ

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

รหัสนี้จะใช้สำหรับการส่งข้อความในพื้นหลัง (ไม่แสดงข้อความนักแต่งเพลง)นอกจากนี้ยังสามารถทำงานภายในตัวรับสัญญาณออกอากาศ หากคุณต้องการส่งข้อความจากตัวรับสัญญาณออกอากาศ

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

1
+1 ทำงานตามความต้องการของฉัน แต่ฉันพลาดสิ่งหนึ่งไป ข้อความนี้ไม่ปรากฏในรายการที่ฉันส่ง เหตุผลที่เป็นเช่นนั้น?
Tahir Akram

เราไม่ได้ใช้กระบวนการ Inten ที่เป็นค่าเริ่มต้นสำหรับการส่ง SMS แต่เราเพิ่งใช้ Sms Manager เจตนาจะพบเพื่อรักษาบันทึกของ SmsManager
Dwivedi Ji

ใช่. มันมีประโยชน์มากสำหรับฉัน แต่ข้อความยืนยันที่ได้รับหลังจากส่ง SMS หมายความว่ามันจะดีกว่า
Gunaseelan

3
ฉันอยากจะแนะนำให้เพิ่มบล็อกนี้ในลองจับ
Tanveer Shaikh

10

ใน Android เรามีSmsManagerระดับที่จัดการการดำเนินงาน SMS เช่นการส่งข้อมูลข้อความและข้อความ SMS pdu รับวัตถุนี้โดยการเรียกวิธีการคงที่ SmsManager.getDefault ()

SmsManager Javadoc

ตรวจสอบลิงค์ต่อไปนี้เพื่อรับรหัสตัวอย่างสำหรับการส่ง SMS:

บทความเกี่ยวกับการส่งและรับข้อความ SMS ใน Android


10

หวังว่ารหัสนี้จะช่วยคุณออก :)

public class MainActivity extends Activity {
    private int mMessageSentParts;
    private int mMessageSentTotalParts;
    private int mMessageSentCount;
     String SENT = "SMS_SENT";
     String DELIVERED = "SMS_DELIVERED";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String phoneNumber = "0000000000";
                String message = "Hello World!";
                sendSMS(phoneNumber,message);


            }
        });



    }


    public void sendSMS(String phoneNumber,String message) {
        SmsManager smsManager = SmsManager.getDefault();


         String SENT = "SMS_SENT";
            String DELIVERED = "SMS_DELIVERED";

            SmsManager sms = SmsManager.getDefault();
            ArrayList<String> parts = sms.divideMessage(message);
            int messageCount = parts.size();

            Log.i("Message Count", "Message Count: " + messageCount);

            ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
            ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();

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

            for (int j = 0; j < messageCount; j++) {
                sentIntents.add(sentPI);
                deliveryIntents.add(deliveredPI);
            }

            // ---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.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
           /* sms.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents, deliveryIntents); */
    }
}

7

ฉันเพิ่มวิธี SMS ของฉันถ้ามันสามารถช่วยใครบางคน ระวังด้วย smsManager.sendTextMessage หากข้อความยาวเกินไปข้อความจะไม่หายไป คุณต้องเคารพความยาวสูงสุดขึ้นอยู่กับการเข้ารหัส ข้อมูลเพิ่มเติมที่นี่ผู้จัดการ SMS ส่งข้อความ mutlipart เมื่อมีน้อยกว่า 160 ตัวอักษร

// ใช้ทุกที่

SMSUtils.sendSMS(context, phoneNumber, message);

// Manifest

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

 <receiver
     android:name=".SMSUtils"
     android:enabled="true"
     android:exported="true">
     <intent-filter>
         <action android:name="SMS_SENT"/>
         <action android:name="SMS_DELIVERED"/>
      </intent-filter>
 </receiver>

// JAVA

public class SMSUtils extends BroadcastReceiver {

    public static final String SENT_SMS_ACTION_NAME = "SMS_SENT";
    public static final String DELIVERED_SMS_ACTION_NAME = "SMS_DELIVERED";

    @Override
    public void onReceive(Context context, Intent intent) {
        //Detect l'envoie de sms
        if (intent.getAction().equals(SENT_SMS_ACTION_NAME)) {
            switch (getResultCode()) {
                case Activity.RESULT_OK: // Sms sent
                    Toast.makeText(context, context.getString(R.string.sms_send), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE: // generic failure
                    Toast.makeText(context, context.getString(R.string.sms_not_send), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE: // No service
                    Toast.makeText(context, context.getString(R.string.sms_not_send_no_service), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU: // null pdu
                    Toast.makeText(context, context.getString(R.string.sms_not_send), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF: //Radio off
                    Toast.makeText(context, context.getString(R.string.sms_not_send_no_radio), Toast.LENGTH_LONG).show();
                    break;
            }
        }
        //detect la reception d'un sms
        else if (intent.getAction().equals(DELIVERED_SMS_ACTION_NAME)) {
            switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(context, context.getString(R.string.sms_receive), Toast.LENGTH_LONG).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(context, context.getString(R.string.sms_not_receive), Toast.LENGTH_LONG).show();
                    break;
            }
        }
    }

    /**
     * Test if device can send SMS
     * @param context
     * @return
     */
    public static boolean canSendSMS(Context context) {
        return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
    }

    public static void sendSMS(final Context context, String phoneNumber, String message) {

        if (!canSendSMS(context)) {
            Toast.makeText(context, context.getString(R.string.cannot_send_sms), Toast.LENGTH_LONG).show();
            return;
        }

        PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent(SENT_SMS_ACTION_NAME), 0);
        PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED_SMS_ACTION_NAME), 0);

        final SMSUtils smsUtils = new SMSUtils();
        //register for sending and delivery
        context.registerReceiver(smsUtils, new IntentFilter(SMSUtils.SENT_SMS_ACTION_NAME));
        context.registerReceiver(smsUtils, new IntentFilter(DELIVERED_SMS_ACTION_NAME));

        SmsManager sms = SmsManager.getDefault();
        ArrayList<String> parts = sms.divideMessage(message);

        ArrayList<PendingIntent> sendList = new ArrayList<>();
        sendList.add(sentPI);

        ArrayList<PendingIntent> deliverList = new ArrayList<>();
        deliverList.add(deliveredPI);

        sms.sendMultipartTextMessage(phoneNumber, null, parts, sendList, deliverList);

        //we unsubscribed in 10 seconds 
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                context.unregisterReceiver(smsUtils);
            }
        }, 10000);

    }
}

5
String phoneNumber = "0123456789";
String message = "Hello World!";

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

รวมสิทธิ์ต่อไปนี้ในไฟล์ AndroidManifest.xml ของคุณ

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

4

สิ่งที่อธิบายไว้ข้างต้นมีไว้สำหรับการวาง SMS ในสถานะ 'พร้อมที่จะเปิดตัว' เท่านั้น ดังที่ Senthil Mg กล่าวว่าคุณสามารถใช้ตัวจัดการ sms เพื่อส่ง SMS ได้โดยตรง แต่SMSManagerถูกย้ายไปที่android.telephony.SmsManager

ฉันรู้ว่ามันไม่ได้เป็นข้อมูลเพิ่มเติมอีกมากมาย แต่มันอาจช่วยใครซักคนในบางวัน


คำถามจะถามอย่างชัดเจนว่าไม่ส่ง SMS ด้วยตัวคุณเอง
Jan Hudec

3

หวังว่านี่จะช่วยคุณได้ ...

ชื่อไฟล์ = MainActivity.java

import android.os.Bundle;
import android.app.Activity;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.inputmethod.InputMethodManager;
import android.widget.*;
import android.view.View.OnClickListener;
import android.view.*;


public class MainActivity extends Activity implements OnClickListener{


  Button click;
  EditText txt;
  TextView txtvw;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    click = (Button)findViewById(R.id.button);
    txt = (EditText)findViewById(R.id.editText);
    txtvw = (TextView)findViewById(R.id.textView1);

    click.setOnClickListener(this);
}

@Override
public void onClick(View v){


    txt.setText("");
    v = this.getCurrentFocus();

    try{
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage("8017891398",null,"Sent from Android",null,null);
    }
    catch(Exception e){
        txtvw.setText("Message not sent!");
    }
    if(v != null){
        InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(v.getWindowToken(),0);
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
  }

}

เพิ่มบรรทัดนี้ใน AndroidManifest.xml

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

ป้อนคำอธิบายรูปภาพที่นี่


3

อนุญาตให้ส่งข้อความผ่านแอพที่มีอยู่ phoneNumber - คือ String หากคุณไม่ต้องการระบุหมายเลขโทรศัพท์ให้ใช้สตริงว่าง ""

Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", phoneNumber, null));
sendIntent.putExtra("sms_body", "text message");
startActivity(sendIntent);

2

ส่ง SMS จาก KitKat ขึ้นไป: - เพิ่มสิทธิ์นี้ในAndroidManifest.xmlของคุณ

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

คุณควรจะต้องใช้การอนุญาตแบบรันไทม์สำหรับ Marshmallowและ Above Version

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.defaultmessanginggit">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".ConversationListActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ComposeSMSActivity"
            android:label="@string/title_activity_compose_sms" >
        </activity>
    </application>

</manifest>

รหัสซึ่งจะได้รับด้านล่าง: -

activity_conversation_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_send_msg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Message" />
</LinearLayout> 

ConversationListActivity.java

public class ConversationListActivity extends FragmentActivity {

    /**
     * Whether or not the activity is in two-pane mode, i.e. running on a tablet
     * device.
     */
    private int PERMISSIONS_REQUEST_RECEIVE_SMS = 130;
    private Button btn_send_sms;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_conversation_list);

        btn_send_sms = (Button) findViewById(R.id.btn_send_msg);

        btn_send_sms.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                int hasSendSMSPermission = 0;
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                    hasSendSMSPermission = checkSelfPermission(Manifest.permission.SEND_SMS);
                    if (hasSendSMSPermission != PackageManager.PERMISSION_GRANTED) {
                        requestPermissions(new String[]{Manifest.permission.SEND_SMS},
                                PERMISSIONS_REQUEST_RECEIVE_SMS);
                    } else if (hasSendSMSPermission == PackageManager.PERMISSION_GRANTED) {
                        Intent intent = new Intent(ConversationListActivity.this, ComposeSMSActivity.class);
                        startActivity(intent);
                    }
                }else{
                    Intent intent = new Intent(ConversationListActivity.this, ComposeSMSActivity.class);
                    startActivity(intent);
                }
            }
        });
    }
}

นี่คือรหัสสำหรับรูปแบบ SMS และสำหรับการส่ง SMS: -

activity_compose_sms.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="MergeRootFrame" />
</LinearLayout>

fragment_compose_sms.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:paddingBottom="16dp">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/compose_to"
                android:id="@+id/textView"
                android:layout_gravity="center_vertical" />

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="phone"
                android:ems="10"
                android:id="@+id/composeEditTextTo" />
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/compose_message"
                android:id="@+id/textView2"
                android:layout_gravity="center_vertical" />

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:ems="10"
                android:id="@+id/composeEditTextMessage"
                android:layout_weight="1" />

        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/compose_cancel"
                android:id="@+id/composeButtonCancel" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/compose_send"
                android:id="@+id/composeButtonSend" />
        </LinearLayout>

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="10dp"
            android:id="@+id/composeNotDefault"
            android:visibility="invisible">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="@string/compose_not_default"
                android:id="@id/composeNotDefault" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/compose_set_default"
                android:id="@+id/composeButtonSetDefault" />
        </LinearLayout>


    </LinearLayout>
</RelativeLayout>

ComposeSMSActivity.java

public class ComposeSMSActivity extends Activity {

    Activity mActivity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_compose_sms);

        mActivity = this;

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }

        getActionBar().setDisplayHomeAsUpEnabled(true);

    }

    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            final View rootView = inflater.inflate(R.layout.fragment_compose_sms, container, false);

            rootView.findViewById(R.id.composeButtonCancel).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    NavUtils.navigateUpTo(getActivity(), new Intent(getActivity(), ConversationListActivity.class));
                }
            });

            rootView.findViewById(R.id.composeButtonSend).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String recipient = ((TextView) rootView.findViewById(R.id.composeEditTextTo)).getText().toString();
                    String message = ((TextView) rootView.findViewById(R.id.composeEditTextMessage)).getText().toString();

                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(recipient, "ME", message, null, null);
                }
            });

            return rootView;
        }
    }
}

แค่นั้นแหละ.


0

คุณสามารถใช้สิ่งนี้เพื่อส่ง SMS ไปยังหมายเลขใด ๆ :

 public void sendsms(View view) {
        String phoneNumber = "+880xxxxxxxxxx";
        String message = "Welcome to sms";
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));
        intent.putExtra("sms_body", message);
        startActivity(intent);
    }

1
อัปเดต: หากคุณใช้ Intent เพื่อส่ง SMS คุณไม่จำเป็นต้องได้รับอนุญาต android.permission.SEND_SMS
Nafis Ahmad

0

คุณสามารถละเว้นหมายเลขโทรศัพท์เพื่อให้ผู้ใช้เพียงแค่เลือกจากผู้ติดต่อ แต่การแทรกข้อความ SMS ของคุณในร่างกาย รหัสสำหรับ Xamarin Android:

    var uri = Uri.Parse("smsto:"); //append your number here for explicit nb
    var intent = new Intent(Intent.ActionSendto, uri);
    intent.PutExtra("sms_body", text);
    Context.StartActivity(intent);

ที่ไหน

บริบทคือ Xamarin.Essentials.Platform.CurrentActivity ?? Application.Context

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.