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

如何生成并发送短信在Android系统中?

在Android中生成短信,可使用 SmsManager类,通过调用其 sendTextMessage()方法,传入目的号码、短信内容等参数来发送短信。

在Android中生成短信的详细步骤

1、添加必要的权限

AndroidManifest.xml文件中添加以下权限,以确保应用有权发送和接收短信:

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

2、创建前端布局文件(XML)

res/layout/activity_main.xml中定义用户界面,包括用于输入电话号码和短信内容的EditText控件,以及一个用于发送短信的Button控件。

如何生成并发送短信在Android系统中?

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:gravity="center"
       android:orientation="vertical">
       <EditText
           android:id="@+id/edPhone1"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="请输入手机号码"
           android:inputType="phone"
           android:minHeight="48dp" />
       <EditText
           android:id="@+id/edContent1"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="内容"
           android:inputType="textMultiLine"
           android:minHeight="48dp" />
       <Button
           android:id="@+id/bt_sendSMSS"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="发送" />
   </LinearLayout>

3、编写后端逻辑代码(Java/Kotlin)

MainActivity.javaMainActivity.kt中实现发送短信的逻辑,获取用户输入的电话号码和短信内容,然后使用SmsManager类发送短信。

   public class MainActivity extends AppCompatActivity {
       private EditText edPhone;
       private EditText edContent;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           edPhone = findViewById(R.id.edPhone1);
           edContent = findViewById(R.id.edContent1);
           Button btSend = findViewById(R.id.bt_sendSMSS);
           btSend.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   sendSMS();
               }
           });
       }
       private void sendSMS() {
           String phoneNumber = edPhone.getText().toString();
           String message = edContent.getText().toString();
           if (!phoneNumber.isEmpty() && !message.isEmpty()) {
               SmsManager smsManager = SmsManager.getDefault();
               smsManager.sendTextMessage(phoneNumber, null, message, null, null);
               Toast.makeText(this, "短信已发送", Toast.LENGTH_SHORT).show();
           } else {
               Toast.makeText(this, "请填写完整的信息", Toast.LENGTH_SHORT).show();
           }
       }
   }

4、处理发送状态和广播监听

如何生成并发送短信在Android系统中?

为了知道短信是否成功发送,可以注册一个广播接收器来监听发送状态,这通常涉及到创建一个继承自BroadcastReceiver的类,并在其中处理接收到的广播。

   public class SMSReceiver extends BroadcastReceiver {
       @Override
       public void onReceive(Context context, Intent intent) {
           Bundle bundle = intent.getExtras();
           if (bundle != null) {
               Object[] pdus = (Object[]) bundle.get("pdus");
               SmsMessage[] msgs = new SmsMessage[pdus.length];
               for (int i = 0; i < msgs.length; i++) {
                   msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                   String str = "SMS from " + msgs[i].getOriginatingAddress() + " : " + msgs[i].getMessageBody();
                   Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
               }
           }
       }
   }

AndroidManifest.xml中注册这个广播接收器:

     <receiver android:name=".SMSReceiver">
         <intent-filter>
             <action android:name="android.provider.Telephony.SMS_RECEIVED" />
         </intent-filter>
     </receiver>

相关问题与解答

问题1:为什么需要在AndroidManifest.xml中添加权限?

答案:在AndroidManifest.xml中添加权限是为了告知系统您的应用需要访问哪些受保护的功能或数据,对于短信功能,您需要声明SEND_SMS权限以允许应用发送短信,以及RECEIVE_SMS权限以允许应用接收短信,这是出于安全考虑,确保用户知道并同意应用正在访问这些敏感功能。

如何生成并发送短信在Android系统中?

问题2:如何处理短信发送失败的情况?

答案:短信发送可能会因为多种原因失败,如网络问题、设备存储空间不足或目标号码不存在等,为了处理这些情况,您可以在发送短信后检查返回值或注册一个广播接收器来监听发送状态,如果发送失败,您可以向用户显示一个错误消息,并提供重试选项或建议用户检查网络连接和设备设置。