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