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

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();};
}
以上就是关于“安卓设置定时短信”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!