问题描述
|
我正在为我的应用程序使用时间选择器,该应用程序会根据将来的特定时间发送短信。我已经使用短信管理器准备好短信发送部分。我也有使用
getCurrentHour()
和getCurrentMinute()
的用户时间。这是我的代码
if(phoneNo.length()>0&&message.length()>0)
{
sendSMS(phoneNo,message);
}
else
{
Toast myToast=Toast.makeText(getBaseContext(),\"Please enter both phone number and message.\",Toast.LENGTH_SHORT);
myToast.show();
}
}
});
}
如何在特定时间发送短信?
解决方法
您需要将
sendSms()
方法移至服务中,然后使用AlamManager使您的服务在正确的时间被唤醒,然后发送您的SMS。
您将需要定义您的服务:
class SmsService extends IntentService
{
@override
void onStartCommand( Intent intent,int flags,int startId )
{
String number = intent.getStringExtra( \"number\" );
String message = intent.getStringExtra( \"message\" );
// Send your SMS here
}
}
您需要在清单中声明此服务:
<service android:name=\".SmsService\">
<intent-filter>
<action android:name=\"mypackage.SEND_SMS\" />
</intent-filter>
</service>
最后,您需要设置闹钟,闹钟将在给定的时间唤醒并发送您的消息:
AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent= new Intent( \"mypackage.SEND_SMS\" );
intent.setExtra( \"number\",number );
intent.setExtra( \"message\",message );
PendingIntent pi = PendingIntent.startService( this,intent,PendingIntent.FLAG_CANCEL_CURRENT );
mgr.set( AlarmManager.RTC_WAKEUP,time,pi );
这将需要从具有扩展或可以访问上下文的活动或服务中调用。