📜  在Android中使用SmsManager通过电话发送短信(1)

📅  最后修改于: 2023-12-03 15:37:34.194000             🧑  作者: Mango

在Android中使用SmsManager通过电话发送短信

使用SmsManager是在Android应用程序中通过电话发送短信的最常见方法。 SmsManager类提供了多个方法来发送短信,例如sendTextMessage()用于发送简单的文本短信。在本文中,我们将讨论如何在Android应用程序中使用SmsManager通过电话发送短信。

条件

在开始使用SmsManager之前,您需要在AndroidManifest.xml文件中请求SEND_SMS权限。

<uses-permission android:name="android.permission.SEND_SMS" />
代码实现

首先,让我们创建与用户进行互动的用户界面。假设我们有一个文本框和两个按钮:一个用于输入电话号码和一个用于发送消息。

<EditText
    android:id="@+id/editTextPhoneNo"
    android:hint="输入电话号码"
    android:inputType="phone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/buttonSendMessage"
    android:text="发送消息"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

接下来,我们需要在Java代码中引用这些视图。我们将引用EditText和Button,并为“发送消息”按钮添加一个OnClickListener,以便在单击按钮时调用sendMessage()方法。

public class MainActivity extends AppCompatActivity {

    private EditText editTextPhoneNo;
    private Button buttonSendMessage;

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

        editTextPhoneNo = findViewById(R.id.editTextPhoneNo);
        buttonSendMessage = findViewById(R.id.buttonSendMessage);
        buttonSendMessage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendMessage();
            }
        });
    }

    private void sendMessage() {
        // TODO: Send SMS message
    }
}

接下来,我们需要在sendMessage()方法中使用SmsManager发送消息。在此方法中,我们获取文本框中输入的电话号码和要发送的消息,使用SmsManager发送消息。

private void sendMessage() {
    String phoneNo = editTextPhoneNo.getText().toString().trim();
    String message = "您好,这是一条测试消息!";

    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(phoneNo, null, message, null, null);
        Toast.makeText(getApplicationContext(), "消息已发送!", Toast.LENGTH_LONG).show();
    } catch (Exception ex) {
        Toast.makeText(getApplicationContext(), ex.getMessage().toString(), Toast.LENGTH_LONG).show();
    }
}

在此代码中,我们使用getDefault()方法获取了默认的SmsManager实例,并使用sendTextMessage()方法向指定的电话号码发送一条文本消息。此方法中的其他参数为可选参数,如消息中心号码和短信传送报告请求,本例中不使用这些参数。如果消息发送成功,则显示一个Toast提示消息已发送,否则显示异常消息。

总结

在本文中,我们学习了如何在Android应用程序中使用SmsManager通过电话发送短信。我们创建了一个简单的用户界面,其中包含文本框和按钮,并在Java代码中引用了这些视图。我们使用SmsManager发送文本消息,并为此添加了异常处理。在实际应用程序中,您可以根据您的需要修改此代码来满足您的需求。

参考