Rid*_*hid 14 android alarmmanager
嗨,我目前正在使用AlarmManager.我写了下面给出的代码.根据代码,应在10秒后触发AlarmManager,但在我的代码中,警报管理器会立即触发.请帮忙.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
long timeOrLengthofWait = 10000;
Intent intentToFire = new Intent(this, AlarmReciever.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0);
alarmManager.set(alarmType, timeOrLengthofWait, alarmIntent);
}
}
Run Code Online (Sandbox Code Playgroud)
和我的AlarmReciever类
public class AlarmReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String phoneNumberReciever="5556";
String message="Alarm Triggered";
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumberReciever, null, message, null, null);
Toast.makeText(context," A message has been sent", Toast.LENGTH_LONG).show();
Log.d("Alarm ", "Alarm Has been triggered and sms send");
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在清单中添加了所需的权限.
Com*_*are 16
您正在使用警报类型ELAPSED_REALTIME_WAKEUP
.这意味着第二个参数set()
必须是从现在开始的毫秒数,现在表示为SystemClock.elapsedRealtime()
.
如果您的目标是在您set()
拨打电话后发生10000毫秒,则该set()
呼叫应为:
alarmManager.set(alarmType, SystemClock.elapsedRealtime()+timeOrLengthofWait, alarmIntent);
Run Code Online (Sandbox Code Playgroud)
Shr*_*hat 14
如果您要为过去的时间创建警报的PendingIntent,它将立即被触发.示例 - 为今天上午8点安排警报,但在上午11点左右执行代码将立即触发.
解:
cal.add(Calendar.DATE, 1);
long delay = 24 * 60 * 60 * 1000;
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), delay,pendingIntent);`
Run Code Online (Sandbox Code Playgroud)
这将在第二天的特定时间(即早上8点)发射事件;
归档时间: |
|
查看次数: |
5987 次 |
最近记录: |