2014-09-28 64 views
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()); 

} 
} 

回答

0

它很难找出表格粘贴好代码。不过,我鼓励你检查以下几件事:

  1. 你得到的data_ora[ii]的值是什么。设置警报并登录logcat后放入日志。
  2. 您是否注册过广播接收机Notifica?
  3. 您是否通过在清单中添加此行来将振动权限添加到您的应用程序中? <uses-permission android:name="android.permission.VIBRATE"></uses-permission>
+0

变量'data_ora [ii]'是这种格式'yyyy-MM-dd hh:mm'。我宣布了广播接收器。现在通知立即显示,而不是在建立的时间。也许代码中有一些错误? – user3608814 2014-09-28 21:48:26

+0

我也添加了权限,但结果相同。 – user3608814 2014-09-28 22:00:06

+0

以格式yyyy-MM-dd hh:mm解析long将导致数字格式异常。例如:Long.parseLong(“2013-01-01 12:00”);数字格式例外。 – 2014-09-29 05:55:10