2016-07-04 2 views
0

私はAndroid用の学習プランナーアプリケーションを構築していますが、時間がたつと正常に動作すると通知をトリガーするように設定しています。 アラームを設定すると、アラームの詳細はSQLiteデータベースに保存されます。アラームがオフになっているときにアラーム情報を呼び出す必要があります。何らかの変数がデータベースに保存され、特定のアラームにリンクできるようになります私はSQLite queryでそれを使って正しいエントリーを見つけることができます。アラームマネージャーイベントで変数を保存する

以下UPDATEコード:

Long nIdLong = System.currentTimeMillis(); 
     String nId = nIdLong.toString(); 
Intent alarmIntent = new Intent(context, AlarmReceiver.class); 
       alarmIntent.putExtra("nID", nId); 

       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent , 0); 

       AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(getActivity().ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 

AlarmReciever:事前

答えて

0

文字列をインテントで送信しています。ロングが必要です。このコードは機能するはずです。

Long nIdLong = System.currentTimeMillis(); 
     String nId = nIdLong.toString(); 
Intent alarmIntent = new Intent(context, AlarmReceiver.class); 
       alarmIntent.putExtra("nID", nIdLong); 

       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent , 0); 

       AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(getActivity().ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 
+0

君は!これは完璧に働いた – user6548194

0

public void onReceive(Context context, Intent intent) 
    { 
     long dbId = intent.getLongExtra("nID", 0); 
     String notificationId = Long.toString(dbId); 
Log.i("App", "called receiver method"); 
     try{ 
Toast.makeText(context, notificationId, Toast.LENGTH_LONG).show(); 
}catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

おかげでアラームを設定しますが、最初のSQLiteへのアラームの詳細を挿入しながら作成されるIDを取得via

long uniqueId = db.insert(your query); 

そしてAlarmEventReceiverのonReceiveインサイド

Intent alarmIntent = new Intent(this, AlarmEventReceiver.class); 
alarmIntent.putExtra("dbId", uniqueId); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent , 0); 

AlarmManager

()のためにPendindIntentのための意図でこれを入れて、あなたは&は、DBからデータを取得IDを取得することができます。

+0

どのようにAlarmReveiverの値を取得しますか? – user6548194

+0

@ user6548194更新された回答を確認 – sJy

+0

複数のアラームが設定されている場合は、最初に設定された情報のみがプルされ、残りの情報はプッシュされません – user6548194

関連する問題