1

アラームシステムがうまく機能するアプリケーションがあり、5つのクラスすべてをコピーしてデータベース名を変更するだけですが、機能していません。すべてのコードを貼り付けることができますが、誰かが次のようなものを持っているかどうかを聞きたいです。これは前に。

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

rowIDは完全(いくつかの数値)であり、mCalendar(私が持っている他のアプリのMcalendarからの日付と比較する日付があり、同じ形式です)。これを呼び出すと、すべてが作成されたとおりになります。保留中の意図

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
4

3 に答える 3

0

おそらくwhen、まだ発生していないか(将来的には遠すぎます)、またはすでに発生しています(を呼び出す前に過去に発生していましたset())。

OnAlarmReceiverまたは、マニフェストで定義していない可能性があります。

于 2012-03-08T14:26:20.543 に答える
0

PresidentingIntent.getBroadcastは一致するpendingIntentを再利用するため、おそらくその保留中のインテントがすでに起動されており(たとえば、コピー元のコードから)、FLAG_ONE_SHOTフラグを使用しているため、一度だけ起動されます。

簡単なテストは、FLAG_ONE_SHOTフラグを削除し、それが起動するかどうかを確認することです。それが問題である場合は、PendingIntent.getBroadcastで別のリクエストコードを使用するだけです。

于 2012-03-08T14:57:41.177 に答える
0

urプロジェクトをクリーンアップしてみてください->クリーンアップしても、新しいプロジェクトを作成して、もう一度クラスを書き始めるのに役立たない場合は、私にとってはうまくいきました:D

于 2012-03-11T13:10:44.433 に答える