如何设置安卓手机定时发送短信?
在安卓设备上设置定时短信,可以通过以下步骤实现:
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();}; }
以上就是关于“安卓设置定时短信”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!