0
我有一些日期與存儲在數據庫表中的時間。現在,在任何相應的日期和時間,我想顯示通知。我創建了這個代碼,但通知沒有創建。Android SQLite AlarmManager
private void setAlarmFromDatabase(){
SQLiteDatabase db = mHelper.getReadableDatabase();
String sql = "SELECT _id, riserva_3 FROM riserva";
Cursor c = db.rawQuery(sql, null);
int count = c.getCount();
String[] data_ora = new String[count];
for(int i=0; i<count; i++) {
c.moveToNext();
data_ora[i] = c.getString(0);
}
c.close();
db.close();
AlarmManager[] alarmManager=new AlarmManager[24];
for(int ii=0;ii<data_ora.length;ii++)
{
alarmManager[ii] = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent i = new Intent(getBaseContext(), Notifica.class);
PendingIntent displayIntent=PendingIntent.getBroadcast(getBaseContext(),ii,i,0);
alarmManager[ii].set(AlarmManager.RTC_WAKEUP,Long.parseLong(data_ora[ii]), displayIntent);
}
this.finish();
overridePendingTransition(R.anim.right_in, R.anim.left_out);
}
的廣播接收器
public class Notifica extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
// Vibrate the mobile phone
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(1000);
showNotification(context);
}
private void showNotification(Context context) {
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
new Intent(context, Login.class), 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(context.getString(R.string.app_name))
.setContentText(context.getString(R.string.testo_notifica));
mBuilder.setContentIntent(contentIntent);
mBuilder.setDefaults(Notification.DEFAULT_SOUND);
mBuilder.setAutoCancel(true);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
}
}
變量'data_ora [ii]'是這種格式'yyyy-MM-dd hh:mm'。我宣佈了廣播接收器。現在通知立即顯示,而不是在建立的時間。也許代碼中有一些錯誤? – user3608814 2014-09-28 21:48:26
我也添加了權限,但結果相同。 – user3608814 2014-09-28 22:00:06
以格式yyyy-MM-dd hh:mm解析long將導致數字格式異常。例如:Long.parseLong(「2013-01-01 12:00」);數字格式例外。 – 2014-09-29 05:55:10