使用 android 应用程序发送短信

Sending text message using android application

我正在尝试按照 this 教程构建 SMS 应用程序,一切似乎都很好,除了当我点击 send button 时,其他人没有收到 message我在 EditText 中输入了号码的用户。 在应用程序中,我有两个 EditText 和一个 button。一个 EditText 用于 message,另一个用于指定接收器的 phone number。代码如下:

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ;
    Button send;
    EditText message;
    EditText phoneno;
    String number;
    String txt;

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

        send=(Button)findViewById(R.id.sendButton);
        message=(EditText)findViewById(R.id.textMessage);
        phoneno=(EditText)findViewById(R.id.phone);

        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sendSMSMessage();
            }
        });
    }

    public void sendSMSMessage(){
        number=phoneno.getText().toString();
        txt=message.getText().toString();

        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.SEND_SMS)
                != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                    Manifest.permission.SEND_SMS)) {
            } else {
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.SEND_SMS},
                        MY_PERMISSIONS_REQUEST_SEND_SMS);
            }
        }

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        //super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_SEND_SMS: {
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(number, null, txt, null, null);
                    Toast.makeText(getApplicationContext(), "SMS sent.",
                            Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(),
                            "SMS faild, please try again.", Toast.LENGTH_LONG).show();
                    return;
                }
            }
        }

    }
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.shaloin.sample852.MainActivity">

<EditText
    android:id="@+id/textMessage"
    android:textSize="20sp"
    android:layout_marginTop="20dp"
    android:hint="Text Message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<EditText
    android:id="@+id/phone"
    android:layout_below="@+id/textMessage"
    android:textSize="20sp"

    android:layout_marginTop="20dp"
    android:hint="Phone Number"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<Button
    android:id="@+id/sendButton"
    android:layout_below="@+id/phone"
    android:layout_centerHorizontal="true"
    android:text="Send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.shaloin.sample852">

<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_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=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

我已经尝试使用内置的 SMS 应用程序发送消息并且它可以工作,但是我刚刚制作的应用程序没有't.Can有人帮忙吗?谢谢:)

其实你并没有在sendSMSMessage函数中写发送消息的代码,可能是第一次发送消息。

public void sendSMSMessage() {
    number = phoneno.getText().toString();
    txt = message.getText().toString();

    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.SEND_SMS)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.SEND_SMS)) {
        } else {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.SEND_SMS},
                    MY_PERMISSIONS_REQUEST_SEND_SMS);
        }
        return;
    }

    sendMessage();

}

public void sendMessage() {
   SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(number, null, txt, null, null);
    Toast.makeText(getApplicationContext(), "SMS sent.",
            Toast.LENGTH_LONG).show();
}