java - 如何让我的应用在给定时间发送定期短信?
问题描述
我正在使用带有 java 的 android studio。
我设法使用 AlarmManager 在给定时间定期获取通知。但这可能与 SmsManager 一起做吗?有人对如何做有任何提示吗?
我是如何使用 AlarmManager 的
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,18);
c.set(Calendar.MINUTE,4);
c.set(Calendar.SECOND,2);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),60*1000,null);
当前短信管理器
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(123, null, "Text", null, null);
解决方案
我不知道 android studio 是否有一种具体的方法来做到这一点,但如果你使用的是 java,你可以使用 ScheduledExecutorService 和一个定期运行你的任务的线程。一个例子应该是这样的:
ScheduledExecutorService executor =
Executor.newScheduledThreadPool(1);
Runnable task = ...;
executor.scheduleWithFixedRate(task, 10, 10, SECONDS);
在这里你有更多关于它的文档。https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html
推荐阅读
- javascript - Alt 标记被空格分隔。如何传递文本?
- java - 当我引用复合键时,无法找到具有逻辑名称错误的列
- php - 405 不允许 Github PHP
- android - 选择文本并显示自定义菜单而不是默认上下文菜单
- c++ - 在 Golang 中将 C 指针转换为 2D 切片
- javascript - 快速车把,无法将选中的属性绑定到复选框
- reactjs - 将 SVGR 与 Webpack 一起使用并配置为输出 TypeScript 时出现语法错误
- rest - Camunda 将消息与正在运行的流程实例相关联,启动新的流程实例
- powershell - PowerShell SSL/TLS 错误与 Invoke-RestMethod 命令
- node.js - process.uncaughtException 不能在 express 中工作