我如何将数据表单数据库传递给广播接收器并在那里再次接收它们?

时间:2015-12-01 11:49:17

标签: android broadcastreceiver android-alarms

我正在尝试开发生日提醒应用程序。我存储了一些数据作为姓名,姓氏,生日日期。我想在用户设置生日日期时将名称变量传递给BroadcastReciever,所以当警报通知时,我可以显示特定生日的名称。我怎么能这样做?以下是我将代码发送到BroadcastReciever的活动代码的一小部分:

if (dateSelected != null) {
    Intent intent = new Intent(AddBirthday.this, AlarmReceiver.class);
    intent.putExtra("extra", getFirstName);
    sendBroadcast(intent);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(AddBirthday.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    // Set the alarm for a particular time.
    //alarmManager.set(AlarmManager.RTC_WAKEUP, test, PendingIntent.getBroadcast(AddBirthday.this, 1 , intent, PendingIntent.FLAG_UPDATE_CURRENT));
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, test, AlarmManager.INTERVAL_DAY, pendingIntent);
}

这是BroadcastReciever

public class AlarmReceiver extends BroadcastReceiver{

    private int MID;

    @Override
    public void onReceive(Context context, Intent intent) {

        // TODO Auto-generated method stub
        long when = System.currentTimeMillis();
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Intent notificationIntent = new Intent(context, MainActivity.class);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent = PendingIntent.getActivity(context,0,notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        NotificationCompat.Builder mNotifyBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(
                context).setSmallIcon(R.drawable.ic_launcher_icon)
                .setContentTitle("Birthday Upcoming")
                .setContentText("Its " + "birthday" + "Dont Forget To Buy Some Present!").setSound(alarmSound)
                .setAutoCancel(true).setWhen(when)
                .setContentIntent(pendingIntent)
                .setVibrate(new long[]{1000, 1000, 1000, 1000, 1000});
        notificationManager.notify(MID, mNotifyBuilder.build());
        MID++;
    }
}

我几乎没有看到这个问题,但我不知道我怎么能这样做。

1 个答案:

答案 0 :(得分:1)

AndroidManifest.xml

<receiver android:name="com.yourapplication.AlarmReceiver">
    <intent-filter>
        <action android:name="com.yourapplication.CUSTOM_INTENT" />
    </intent-filter>
</receiver>

当警报命中时,准备要关闭的意图:

Intent intent = new Intent("com.yourapplication.CUSTOM_INTENT");
intent.putExtra("extra", getFirstName);
PendingIntent pendingIntent = PendingIntent.getBroadcast(AddBirthday.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, test, AlarmManager.INTERVAL_DAY, pendingIntent);

该名称存储在发送给AlarmReceiver的意图中:

@Override
public void onReceive(Context context, Intent intent) {
    String name = intent.getStringExtra("extra");
    ...
    NotificationCompat.Builder mNotifyBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_launcher_icon)
        .setContentTitle("Birthday Upcoming for " + name)
        ...