如何使用内部PendingIntent

时间:2018-07-09 06:52:36

标签: android android-pendingintent

我有对象PendingIntent,该对象由方法toString()强制转换为String。我需要解析它以键入PendingIntent。我该怎么办?

这是对象:

public class NotificationInit implements Serializable, Parcelable {
    private Bitmap app_image;
    private String title, message, time, date, noticeKey, packageName;
    private PendingIntent messageIntent;
    private Calendar notifyDate;

    public NotificationInit(String noticeKey, String packageName, Bitmap app_image, String title, String message, String time, String date, PendingIntent messageIntent) {
        this.noticeKey = noticeKey;
        this.packageName = packageName;
        this.app_image = app_image;
        this.title = title;
        this.message = message;
        this.time = time;
        this.date = date;
        this.messageIntent = messageIntent;

        notifyDate = Calendar.getInstance();
        notifyDate.setTimeInMillis(Long.parseLong(time));
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(title);
        dest.writeString(message);
        dest.writeString(time);
        dest.writeString(date);
        dest.writeString(noticeKey);
    }
}

此代码还具有getter和setters

在插入SharedPreferences之前,我需要先创建它,因为这是不使用数据库保存此数据的最简单方法!

如何序列化对象?

1 个答案:

答案 0 :(得分:0)

您不能以这种方式这样做。您无法通过调用PendingIntent来序列化toString()。您无法序列化PendingIntent并保存到SharedPreferences,因为PendingIntent不是持久性的。

您需要做的就是存储足够的数据,以便可以在需要时重新创建PendingIntent。这意味着您需要了解Intent中的信息(动作,数据,组件等),并且需要传递给requestCode的{​​{1}}。将这些东西存储在您的PendingIntent.getActivity()中。