私のアプリケーションにはリマインダーを設定する機能があります。このようなリマインダーを作成しています
Intent intent = new Intent(Context,ReminderActivity.class);
intent.putExtra(ResolutionsListActivity.RESOLUTION_OBJECT, resolution);
PendingIntent sender = PendingIntent.getBroadcast(
ComposeResolutionActivity.this,intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
interval, sender);
解決 --- シリアライズ可能なオブジェクト。
ここで、ReminderActivity クラスはブロードキャスト レシーバーを拡張します。
このようにマニフェストでレシーバーを宣言しました
< receiver android:name="com.webileapps.resolutions.ReminderActivity"
android:process=":remote" />
私のreminderactivityクラスでは、トリガーされたアラームをキャッチして通知を表示しています。
public class ReminderActivity extends BroadcastReceiver {
private static final String TAG = "ReminderActivity";
@Override
public void onReceive(Context context, Intent intent) {
// Toast.makeText(context, "Alarm set", Toast.LENGTH_SHORT).show();
Resolution resolution = (Resolution) intent
.getSerializableExtra(ResolutionsListActivity.RESOLUTION_OBJECT);
showNotification(context, resolution);
}
ユーザーがリマインダー通知をタップするたびに、そのオブジェクトでアクティビティをロードできるように、シリアライズ可能なオブジェクトを渡しています。ただし、アラームがトリガーされるたびに、「エクストラの入力に失敗しました」などのエラーが発生します。
誰かが私が間違っていることを指摘できますか?