1

通知のスケジューリングに問題があり、何も受信しません。ここで mi cose:

クラス AlarmSet :

public void AlarmStart() {
     Calendar cal = Calendar.getInstance();
     cal.setTimeZone(TimeZone.getDefault());
     cal.set(Calendar.HOUR_OF_DAY, 20);
     cal.set(Calendar.MINUTE, 15);
     Intent intent = new Intent(context, AlarmReceiver.class);
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
     AlarmManager am = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
     am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),AlarmManager.INTERVAL_FIFTEEN_MINUTES, sender);
     Log.d("MyActivity", "Set alarmManager.setRepeating to: " + cal.getTime().toLocaleString());
}

クラス AlarmReceiver :

public void onReceive(Context context, Intent objIntent) {
    Log.d("AlarmReceiver", "Called context.startService from AlarmReceiver.onReceive");
}

そしてマニフェストで: ... ...

受信機 android:name="AlarmReceiver">
/アプリケーション>

最初のログ メッセージを取得すると、アクティビティが設定されているように見えますが、それ以外は何も受信しません。これらは単純なクラスであるため、コンテキストは別のアクティビティ クラスから渡されます。

私は何が間違っているのですか?私は他のユーザーのコードを見たことがありますが、それは私のものとかなり同じです。

4

1 に答える 1

1

サービスを使用するのではなく、ブロードキャストでこれを設定しようとしている理由はわかりません。できること (通知をスケジュールするだけの場合) は、PendingIntent を変更して、ブロードキャストをトリガーする代わりに IntentService を開始することです。

Intent myIntent = new Intent(context, YourService.class);
PendingIntent sender = PendingIntent.getService(context, 0, myIntent, 0);
 AlarmManager am = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis),AlarmManager.INTERVAL_FIFTEEN_MINUTES, sender                      );

次に、(IntentService を拡張する) YourService の onHandleIntent() メソッドで、実際の通知送信などを処理するコードを配置します。

于 2013-05-23T19:21:39.637 に答える