2014-09-28 110 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