2012-03-08 5 views
1

私は5つのクラスをすべてコピーしてデータベースの名前を変更するだけですが、正常ではありません。誰かがこれのようなものを以前に持っていたかどうか聞いてみたい。Androids AlarmManagerはアラームを発生させない

私は新しいReminderManager(this)を呼び出します.setReminder(mRowId、mCalendar);

rowIDはフル(いくつかの番号)とmCalendar(私が持っている他のアプリのMcalendarの日付と比較して同じフォーマットです)と私はこれをすべて呼び出しますそれはcreateseすべき保留意図

public void setReminder(Long taskId, Calendar when) 
{ 
    Intent i= new Intent(mContext,OnAlarmReciver.class); 
    i.putExtra(DatabaseIN.KEY_ROWID,(long)taskId); 


    PendingIntent pi=PendingIntent.getBroadcast(mContext,0, i, PendingIntent.FLAG_ONE_SHOT); 
    mAlarmManager.set(AlarmManager.RTC_WAKEUP,when.getTimeInMillis(),pi); 

} 
after this nothing happens... can anyone help 

答えて

0

私のために働いている..ウルプロジェクト - >クリーン、それは新しいプロジェクトの作成を支援し、もう一度clasesの書き込みを開始しない場合をきれいにしてください:D

+1

本当に助けてくれてありがとう – Tony

0

おそらくwhenは(あまりにも遠い未来で)まだ起きていないか、すでに起こった(set()にあなたの呼び出しの前に、過去にありました)。

また、マニフェストにOnAlarmReceiverが定義されていない可能性があります。

+0

は、私はそれ <活動 アンドロイドを持っています:label = "@ string/app_name" android:name = "。OnAlarmReciver" /> <アクティビティ – Tony

0

PendingIntent.getBroadcastは、一致するpendingIntentを再利用します。そのため、すでに保留中のインテントが既に呼び出されている可能性があります(たとえば、コピー元のコードなどから)FLAG_ONE_SHOTフラグを使用しているため、一度火を。

クイックテストでは、FLAG_ONE_SHOTフラグを削除して起動するかどうかを確認します。それが問題であれば、単にPendingIntent.getBroadcastで別のリクエストコードを使用してください。

+0

FLAG_ONE_SHOTの代わりに何を入れるべきですか? – Tony

+0

これは達成しようとしていることによって異なります。あなたはまだフラグを使用することができますが、インテントを放つ必要があるだけですが、リクエストコードが別のインテントで異なる必要があります(現在は複数のアラームのために0を使用しています)。実際にFLAG_ONE_SHOTが必要ない場合は、フラグを使用しないでください(つまり、0にする)。 – dule

関連する問題