如何设置安卓手机定时发送短信?

在安卓设备上设置定时短信,可以通过以下步骤实现:

如何设置安卓手机定时发送短信?

1、获取权限

AndroidManifest.xml文件中添加发送短信的权限:

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

2、创建布局文件

activity_main.xml:用于显示用户界面。

如何设置安卓手机定时发送短信?

     <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/phoneNumberEditText"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="Enter Phone Number" />
         <EditText
             android:id="@+id/messageEditText"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="Enter Message" />
         <Button
             android:id="@+id/datePickButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Select Date" />
         <Button
             android:id="@+id/timePickButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Select Time" />
         <Button
             android:id="@+id/sendButton"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Send" />
     </LinearLayout>

3、编写主活动

MainActivity.java:处理用户输入和设置定时任务。

     package com.example.scheduledtext;
     import android.app.AlarmManager;
     import android.app.PendingIntent;
     import android.content.Context;
     import android.content.Intent;
     import android.os.Bundle;
     import android.telephony.SmsManager;
     import android.view.View;
     import android.widget.Button;
     import android.widget.DatePicker;
     import android.widget.EditText;
     import android.widget.TimePicker;
     import android.widget.Toast;
     import androidx.annotation.Nullable;
     import androidx.appcompat.app.AppCompatActivity;
     import java.util.Calendar;
     import java.util.List;
     import java.util.Locale;
     public class MainActivity extends AppCompatActivity {
         private EditText phoneNumberEditText;
         private EditText messageEditText;
         private Calendar calendar;
         private AlarmManager alarmManager;
         private PendingIntent pendingIntent;
         @Override
         protected void onCreate(@Nullable Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             phoneNumberEditText = findViewById(R.id.phoneNumberEditText);
             messageEditText = findViewById(R.id.messageEditText);
             Button datePickButton = findViewById(R.id.datePickButton);
             Button timePickButton = findViewById(R.id.timePickButton);
             Button sendButton = findViewById(R.id.sendButton);
             calendar = Calendar.getInstance();
             alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
             datePickButton.setOnClickListener(v -> showDatePickerDialog());
             timePickButton.setOnClickListener(v -> showTimePickerDialog());
             sendButton.setOnClickListener(v -> scheduleMessage());
         }
         private void showDatePickerDialog() {
             new DatePickerDialog(this, (view, year, monthOfYear, dayOfMonth) -> {
                 calendar.set(Calendar.YEAR, year);
                 calendar.set(Calendar.MONTH, monthOfYear);
                 calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
             }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
         }
         private void showTimePickerDialog() {
             new TimePickerDialog(this, (view, hourOfDay, minute) -> {
                 calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                 calendar.set(Calendar.MINUTE, minute);
             }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true).show();
         }
         private void scheduleMessage() {
             String phoneNumber = phoneNumberEditText.getText().toString();
             String message = messageEditText.getText().toString();
             long triggerAtMillis = calendar.getTimeInMillis();
             if (triggerAtMillis < System.currentTimeMillis()) {
                 Toast.makeText(this, "Selected time is in the past", Toast.LENGTH_SHORT).show();
                 return;
             }
             SmsManager smsManager = SmsManager.getDefault();
             List<String> messages = smsManager.divideMessage(message);
             for (String msg : messages) {
                 Intent intent = new Intent(this, SendSmsReceiver.class);
                 intent.putExtra("phoneNumber", phoneNumber);
                 intent.putExtra("message", msg);
                 PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
                 alarmManager.setExact(AlarmManager.RTC_WAKEUP, triggerAtMillis, pi);
             }
             Toast.makeText(this, "Scheduled message", Toast.LENGTH_SHORT).show();
         }
     }

4、创建广播接收器

SendSmsReceiver.java:在设定时间发送短信。

如何设置安卓手机定时发送短信?

     package com.example.scheduledtext;
     import android.content.BroadcastReceiver;
     import android.content.Context;
     import android.content.Intent;
     import android.telephony.SmsManager;
     import android.widget.Toast;
     public class SendSmsReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
             String phoneNumber = intent.getStringExtra("phoneNumber");
             String message = intent.getStringExtra("message");
             try {
                 SmsManager smsManager = SmsManager.getDefault();
                 smsManager.sendTextMessage(phoneNumber, null, message, null, null);
                 Toast.makeText(context, "Message sent", Toast.LENGTH_SHORT).show();
             } catch (Exception e) {
                 Toast.makeText(context, "Failed to send message", Toast.LENGTH_SHORT).show();
             }
         }
     }

5、注册广播接收器

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

     <receiver android:name=".SendSmsReceiver" />
     <uses-permission android:name="android.permission.SEND_SMS"/>
     <application ... >
         <receiver android:name=".SendSmsReceiver" />
     </application>
     public class MainActivity extends AppCompatActivity {
         private EditText phoneNumberEditText;
         private EditText messageEditText;
         private Calendar calendar;
         private AlarmManager alarmManager;
         private PendingIntent pendingIntent;
         private static final int REQUEST_CODE_PERMISSION = 100;
         //... other code remains the same ...
         private void checkPermissionAndScheduleMessage() {
             if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED) {
                 scheduleMessage();
             } else {
                 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, REQUEST_CODE_PERMISSION);
             }
         }
         @Override
         public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
             super.onRequestPermissionsResult(requestCode, permissions, grantResults);
             if (requestCode == REQUEST_CODE_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                 scheduleMessage();
             } else {
                 Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
             }
         }
     }
     private void scheduleMessage() {
         String phoneNumber = phoneNumberEditText.getText().toString();
         String message = messageEditText.getText().toString();
         long triggerAtMillis = calendar.getTimeInMillis();
         if (triggerAtMillis < System.currentTimeMillis()) {
             Toast.makeText(this, "Selected time is in the past", Toast.LENGTH_SHORT).show();
             return;
         }
         checkPermissionAndScheduleMessage();
     }
     private void checkPermissionAndScheduleMessage() {
         if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED) {
             scheduleMessage();
         } else {
             ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.SEND_SMS}, REQUEST_CODE_PERMISSION);
         }
     }
     @Override
     public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
         if (requestCode == REQUEST_CODE_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
             scheduleMessage();
         } else {
             Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
         }
     }
     private void scheduleMessage() {
         String phoneNumber = phoneNumberEditText.getText().toString();
         String message = messageEditText.getText().Toast.makeText(this, "Scheduled message", Toast.LENGTH_SHORT).show();};
     }

以上就是关于“安卓设置定时短信”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!