我正在为我的应用程序使用时间选择器,该应用程序将根据特定时间发送短信。我有短信发送部分准备使用短信管理器。我还有使用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();
}
}
});
}
如何在特定时间发送短信?
答案 0 :(得分:1)
您需要将sendSms()
方法移至服务中,然后使用AlamManager使您的服务在正确的时间被唤醒,并发送您的短信。
您需要定义服务:
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, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT );
mgr.set( AlarmManager.RTC_WAKEUP, time, pi );
这需要在已扩展或有权访问Context的活动或服务中进行调用。