1485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen/*
2485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * Copyright (C) 2016 The Android Open Source Project
3485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen *
4485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * Licensed under the Apache License, Version 2.0 (the "License");
5485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * you may not use this file except in compliance with the License.
6485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * You may obtain a copy of the License at
7485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen *
8485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen *      http://www.apache.org/licenses/LICENSE-2.0
9485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen *
10485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * Unless required by applicable law or agreed to in writing, software
11485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * distributed under the License is distributed on an "AS IS" BASIS,
12485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * See the License for the specific language governing permissions and
14485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * limitations under the License.
15485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen */
16485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
17485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenpackage android.telephony;
18485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
19485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenimport android.annotation.Nullable;
20485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenimport android.os.Bundle;
21485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenimport android.os.Parcel;
22485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenimport android.os.Parcelable;
23485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenimport android.telecom.PhoneAccountHandle;
24485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenimport android.telephony.VisualVoicemailService.VisualVoicemailTask;
25485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
26485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen/**
27485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * Represents the content of a visual voicemail SMS. If a incoming SMS matches the {@link
28485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * VisualVoicemailSmsFilterSettings} set by the default dialer, {@link
29485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen * VisualVoicemailService#onSmsReceived(VisualVoicemailTask, VisualVoicemailSms)} will be called.
30485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen */
31485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yenpublic final class VisualVoicemailSms implements Parcelable {
32485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
33485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    private final PhoneAccountHandle mPhoneAccountHandle;
34485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    @Nullable
35485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    private final String mPrefix;
36485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
37485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    @Nullable
38485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    private final Bundle mFields;
39485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
40485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    private final String mMessageBody;
41485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
42485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    VisualVoicemailSms(Builder builder) {
43485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        mPhoneAccountHandle = builder.mPhoneAccountHandle;
44485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        mPrefix = builder.mPrefix;
45485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        mFields = builder.mFields;
46485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        mMessageBody = builder.mMessageBody;
47485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
48485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
49485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    /**
50485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     * The {@link PhoneAccountHandle} that received the SMS.
51485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     */
52485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public PhoneAccountHandle getPhoneAccountHandle() {
53485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        return mPhoneAccountHandle;
54485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
55485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
56485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    /**
57485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     * The event type of the SMS or {@code null} if the framework cannot parse the SMS as voicemail
58485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     * but the carrier pattern indicates it is. Common values are "SYNC" or "STATUS".
59485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     */
60485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public String getPrefix() {
61485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        return mPrefix;
62485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
63485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
64485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    /**
65485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     * The key-value pairs sent by the SMS, or {@code null} if the framework cannot parse the SMS as
663f5858efa0b4bbed447989dca7d2c06c51dc8d13Ta-wei Yen     * voicemail but the carrier pattern indicates it is. The interpretation of the fields is
673f5858efa0b4bbed447989dca7d2c06c51dc8d13Ta-wei Yen     * carrier dependent.
68485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     */
69485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public Bundle getFields() {
70485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        return mFields;
71485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
72485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
73485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    /**
74485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     * Raw message body of the received SMS.
75485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     */
76485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public String getMessageBody() {
77485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        return mMessageBody;
78485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
79485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
80485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    /**
81485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     * Builder for the {@link VisualVoicemailSms}. Internal use only.
82485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     *
83485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     * @hide
84485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen     */
85485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public static class Builder {
86485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
87485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        private PhoneAccountHandle mPhoneAccountHandle;
88485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        private String mPrefix;
89485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        private Bundle mFields;
90485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        private String mMessageBody;
91485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
92485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        public VisualVoicemailSms build() {
93485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            return new VisualVoicemailSms(this);
94485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        }
95485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
96485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        public Builder setPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) {
97485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            this.mPhoneAccountHandle = phoneAccountHandle;
98485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            return this;
99485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        }
100485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
101485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        public Builder setPrefix(String prefix) {
102485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            this.mPrefix = prefix;
103485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            return this;
104485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        }
105485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
106485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        public Builder setFields(Bundle fields) {
107485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            this.mFields = fields;
108485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            return this;
109485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        }
110485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
111485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        public Builder setMessageBody(String messageBody) {
112485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            this.mMessageBody = messageBody;
113485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            return this;
114485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        }
115485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
116485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
117485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
118485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
119485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public static final Creator<VisualVoicemailSms> CREATOR =
120485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            new Creator<VisualVoicemailSms>() {
121485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                @Override
122485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                public VisualVoicemailSms createFromParcel(Parcel in) {
123485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                    return new Builder()
124485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                            .setPhoneAccountHandle((PhoneAccountHandle) in.readParcelable(null))
125485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                            .setPrefix(in.readString())
126485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                            .setFields(in.readBundle())
127485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                            .setMessageBody(in.readString())
128485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                            .build();
129485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                }
130485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
131485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                @Override
132485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                public VisualVoicemailSms[] newArray(int size) {
133485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                    return new VisualVoicemailSms[size];
134485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen                }
135485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen            };
136485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
137485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    @Override
138485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public int describeContents() {
139485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        return 0;
140485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
141485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen
142485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    @Override
143485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    public void writeToParcel(Parcel dest, int flags) {
144485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        dest.writeParcelable(getPhoneAccountHandle(), flags);
145485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        dest.writeString(getPrefix());
146485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        dest.writeBundle(getFields());
147485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen        dest.writeString(getMessageBody());
148485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen    }
149485d6dec93579d2186a3ecd57c2b5af4ce8e622bTa-wei Yen}
150