当前位置:首页 > 行业动态 > 正文

如何在Android设备上实现本机短信发送功能?

在Android中,可使用SmsManager类来给本机发短信。先获取SmsManager实例,然后调用sendTextMessage方法,传入目的号码( 本机号码)、 短信内容等参数即可发送短信。

Android给本机发短信的详细方法

在Android开发中,实现给本机发送短信的功能主要涉及到权限申请、使用SmsManager类以及处理用户交互和反馈,以下是详细的步骤和代码示例:

1、添加权限

在AndroidManifest.xml文件中添加发送短信的权限声明。

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

2、布局文件(activity_send_sms.xml)

如何在Android设备上实现本机短信发送功能?

创建一个简单的用户界面,包含输入电话号码和短信内容的文本框,以及一个发送按钮。

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:orientation="vertical"
         android:padding="16dp">
         
         <EditText
             android:id="@+id/phone_number"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="请输入电话号码" />
         
         <EditText
             android:id="@+id/message_content"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="请输入短信内容"
             android:layout_marginTop="8dp" />
         
         <Button
             android:id="@+id/send_button"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="发送短信"
             android:layout_marginTop="16dp" />
     </LinearLayout>

3、Java代码实现(SendSmsActivity.java)

在Activity中获取用户输入的电话号码和短信内容,并调用SmsManager发送短信。

如何在Android设备上实现本机短信发送功能?

 import android.Manifest;
     import android.content.pm.PackageManager;
     import android.os.Bundle;
     import android.telephony.SmsManager;
     import android.view.View;
     import android.widget.Button;
     import android.widget.EditText;
     import android.widget.Toast;
     import androidx.annotation.NonNull;
     import androidx.appcompat.app.AppCompatActivity;
     import androidx.core.app.ActivityCompat;
     public class SendSmsActivity extends AppCompatActivity {
         private static final int SMS_PERMISSION_CODE = 101;
         private EditText phoneNumber;
         private EditText messageContent;
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_send_sms);
             phoneNumber = findViewById(R.id.phone_number);
             messageContent = findViewById(R.id.message_content);
             Button sendButton = findViewById(R.id.send_button);
             sendButton.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     sendSms();
                 }
             });
         }
         private void sendSms() {
             String number = phoneNumber.getText().toString();
             String message = messageContent.getText().toString();
             // 请求发送短信权限
             if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
                 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, SMS_PERMISSION_CODE);
             } else {
                 SmsManager smsManager = SmsManager.getDefault();
                 smsManager.sendTextMessage(number, null, message, null, null);
                 Toast.makeText(this, "短信发送成功", Toast.LENGTH_SHORT).show();
             }
         }
         @Override
         public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
             if (requestCode == SMS_PERMISSION_CODE) {
                 if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                     sendSms();
                 } else {
                     Toast.makeText(this, "权限被拒绝,无法发送短信", Toast.LENGTH_SHORT).show();
                 }
             }
         }
     }

相关问题与解答

1、问题:如何在Android中检查是否已经获得了发送短信的权限?

回答:可以使用ActivityCompat.checkSelfPermission()方法来检查是否已经获得了发送短信的权限,如果返回PackageManager.PERMISSION_GRANTED,则表示已经获得了权限;否则表示未获得权限,需要请求权限。

 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
         // 请求发送短信权限
     }

2、问题:在Android中,如何通过ADB命令给本机发送短信?

如何在Android设备上实现本机短信发送功能?

回答:可以通过ADB命令结合Intent来实现给本机发送短信,具体命令如下:

 adb shell am start -a android.intent.action.SENDTO -d sms:PHONE_NUMBER --es sms_body "MESSAGE_BODY" --ez exit_on_sent true

PHONE_NUMBER是接收短信的手机号码,MESSAGE_BODY是短信的内容,执行该命令后,系统会弹出发送短信的界面,并自动填写好接收号码和短信内容。