Java 安卓:我如何在后台发送短信?(API最小值为21)

Java 安卓:我如何在后台发送短信?(API最小值为21),java,android,Java,Android,我正在创建一个发送短信的Android应用程序。除了一个问题,我什么都做得很好;除非应用程序处于打开状态,否则它不会发送消息 我的发送代码是基本的: 我希望消息在特定时间发送。我将时间存储在一个名为timeToSend的字符串中,如果应用程序位于前台,它会完美地发送。如何让它在后台发送消息?我读过AlarmManager,但我不确定这是否是我需要的 谢谢。我想您可以使用AsyncTask,它在后台运行 有关如何实施的详细信息如下: AsyncTask允许正确且轻松地使用UI线程。这个班 允许您在

我正在创建一个发送短信的Android应用程序。除了一个问题,我什么都做得很好;除非应用程序处于打开状态,否则它不会发送消息

我的发送代码是基本的:


我希望消息在特定时间发送。我将时间存储在一个名为timeToSend的字符串中,如果应用程序位于前台,它会完美地发送。如何让它在后台发送消息?我读过AlarmManager,但我不确定这是否是我需要的

谢谢。

我想您可以使用AsyncTask,它在后台运行

有关如何实施的详细信息如下:

AsyncTask允许正确且轻松地使用UI线程。这个班 允许您在上执行后台操作和发布结果 UI线程,而无需操作线程和/或处理程序


正如@commonware所说,您需要处理特定的时间逻辑。为什么不使用一个可以调用服务的服务,在这个服务中,您发送短信的代码实际发生了。如果您确实使用AlarmManager,请注意,不同版本的Android可能会通过与AlarmManager相关的不同方法进行处理,可能包括必要时重置AlarmManager的代码。您还必须了解从棉花糖到……在后台管理服务方式的变化


**编辑:**请注意,重新启动设备时,您还必须重置AlarmManager

我希望消息在特定的时间发送-那么您的问题可能在于特定时间逻辑的代码中。我将特定时间设置为从我使用它时算起的一分钟。我的观点是,您的问题没有显示特定时间逻辑的代码。结果,没有人能帮你。我有一个字符串,我可以设置时间。假设我把它设置为午夜。现在是凌晨12点。午夜一到,就发送短信。我刚刚试过,但它仍然只在打开时发送工作得很好!它有点延迟,但这是我的API级别所期望的。
    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(phoneNumber, null, messageToSend, null, null);