17340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock/** 27340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * Copyright (c) 2014, The Android Open Source Project 37340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * 47340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * Licensed under the Apache License, Version 2.0 (the "License"); 57340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * you may not use this file except in compliance with the License. 67340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * You may obtain a copy of the License at 77340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * 87340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * http://www.apache.org/licenses/LICENSE-2.0 97340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * 107340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * Unless required by applicable law or agreed to in writing, software 117340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * distributed under the License is distributed on an "AS IS" BASIS, 127340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * See the License for the specific language governing permissions and 147340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock * limitations under the License. 157340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock */ 167340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 177340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockpackage android.service.notification; 187340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 191d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynoldsimport android.annotation.IntDef; 20a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynoldsimport android.annotation.SystemApi; 211d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynoldsimport android.app.AutomaticZenRule; 22e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlockimport android.content.Context; 237340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport android.net.Uri; 247340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport android.os.Parcel; 257340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport android.os.Parcelable; 267340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 271d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynoldsimport java.lang.annotation.Retention; 281d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynoldsimport java.lang.annotation.RetentionPolicy; 297340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlockimport java.util.Objects; 307340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 317340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock/** 321d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * The current condition of an {@link android.app.AutomaticZenRule}, provided by the 331d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * {@link ConditionProviderService} that owns the rule. Used to tell the system to enter Do Not 341d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * Disturb mode and request that the system exit Do Not Disturb mode. 357340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock */ 36ad41a6f0def1dfef9fb5ad1a7bed355760eed6beJulia Reynoldspublic final class Condition implements Parcelable { 377340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 381d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 39e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static final String SCHEME = "condition"; 40e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock 411d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds /** @hide */ 421d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @IntDef({STATE_FALSE, STATE_TRUE, STATE_TRUE, STATE_ERROR}) 431d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @Retention(RetentionPolicy.SOURCE) 441d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds public @interface State {} 451d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds 461d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds /** 471d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * Indicates that Do Not Disturb should be turned off. Note that all Conditions from all 481d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * {@link ConditionProviderService} providers must be off for Do Not Disturb to be turned off on 491d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * the device. 501d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds */ 51e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static final int STATE_FALSE = 0; 521d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds /** 531d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * Indicates that Do Not Disturb should be turned on. 541d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds */ 55e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static final int STATE_TRUE = 1; 561d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds 571d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 58e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static final int STATE_UNKNOWN = 2; 591d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 60e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static final int STATE_ERROR = 3; 61e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock 621d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 637340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public static final int FLAG_RELEVANT_NOW = 1 << 0; 641d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 657340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public static final int FLAG_RELEVANT_ALWAYS = 1 << 1; 667340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 67a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds /** 681d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * The URI representing the rule being updated. 69a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds * See {@link android.app.AutomaticZenRule#getConditionId()}. 70a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds */ 717340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public final Uri id; 72a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds 73a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds /** 74a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds * A summary of what the rule encoded in {@link #id} means when it is enabled. User visible 75a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds * if the state of the condition is {@link #STATE_TRUE}. 76a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds */ 77ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock public final String summary; 78a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds 791d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 80ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock public final String line1; 811d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 82ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock public final String line2; 83a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds 84a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds /** 851d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * The state of this condition. {@link #STATE_TRUE} will enable Do Not Disturb mode. 861d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * {@link #STATE_FALSE} will turn Do Not Disturb off for this rule. Note that Do Not Disturb 871d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * might still be enabled globally if other conditions are in a {@link #STATE_TRUE} state. 88a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds */ 891d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @State 90ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock public final int state; 91a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds 92a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds @SystemApi 93ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock public final int flags; 94a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds @SystemApi 95a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds public final int icon; 96a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds 971d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds /** 981d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * An object representing the current state of a {@link android.app.AutomaticZenRule}. 991d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * @param id the {@link android.app.AutomaticZenRule#getConditionId()} of the zen rule 1001d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds * @param summary a user visible description of the rule state. 1011d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds */ 1021d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds public Condition(Uri id, String summary, int state) { 1031d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds this(id, summary, "", "", -1, state, FLAG_RELEVANT_ALWAYS); 104a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds } 105ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock 106a62496d8f7cb9048331451af07466b1edc568c7dJulia Reynolds @SystemApi 107ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock public Condition(Uri id, String summary, String line1, String line2, int icon, 108ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock int state, int flags) { 1097340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock if (id == null) throw new IllegalArgumentException("id is required"); 110ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock if (summary == null) throw new IllegalArgumentException("summary is required"); 111e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock if (!isValidState(state)) throw new IllegalArgumentException("state is invalid: " + state); 1127340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock this.id = id; 113ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock this.summary = summary; 114ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock this.line1 = line1; 115ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock this.line2 = line2; 116ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock this.icon = icon; 1177340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock this.state = state; 1187340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock this.flags = flags; 1197340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 1207340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 1211d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds public Condition(Parcel source) { 122e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock this((Uri)source.readParcelable(Condition.class.getClassLoader()), 123e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock source.readString(), 124ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock source.readString(), 125ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock source.readString(), 126ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock source.readInt(), 127e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock source.readInt(), 128e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock source.readInt()); 129e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock } 130e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock 131e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock private static boolean isValidState(int state) { 132e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock return state >= STATE_FALSE && state <= STATE_ERROR; 1337340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 1347340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 1357340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock @Override 1367340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public void writeToParcel(Parcel dest, int flags) { 1377340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock dest.writeParcelable(id, 0); 138ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock dest.writeString(summary); 139ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock dest.writeString(line1); 140ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock dest.writeString(line2); 141ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock dest.writeInt(icon); 142e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock dest.writeInt(state); 1433b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock dest.writeInt(this.flags); 1447340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 1457340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 1467340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock @Override 1477340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public String toString() { 1487340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock return new StringBuilder(Condition.class.getSimpleName()).append('[') 1497340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock .append("id=").append(id) 150ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock .append(",summary=").append(summary) 151ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock .append(",line1=").append(line1) 152ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock .append(",line2=").append(line2) 153ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock .append(",icon=").append(icon) 154e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock .append(",state=").append(stateToString(state)) 1557340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock .append(",flags=").append(flags) 1567340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock .append(']').toString(); 1577340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 1587340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 1591d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 160e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static String stateToString(int state) { 161e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock if (state == STATE_FALSE) return "STATE_FALSE"; 162e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock if (state == STATE_TRUE) return "STATE_TRUE"; 163e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock if (state == STATE_UNKNOWN) return "STATE_UNKNOWN"; 164e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock if (state == STATE_ERROR) return "STATE_ERROR"; 165e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock throw new IllegalArgumentException("state is invalid: " + state); 166e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock } 167e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock 1681d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 1693b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock public static String relevanceToString(int flags) { 1703b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock final boolean now = (flags & FLAG_RELEVANT_NOW) != 0; 1713b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock final boolean always = (flags & FLAG_RELEVANT_ALWAYS) != 0; 1723b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock if (!now && !always) return "NONE"; 1733b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock if (now && always) return "NOW, ALWAYS"; 1743b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock return now ? "NOW" : "ALWAYS"; 1753b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock } 1763b98b3f1f85aff0c84ebef4dd497c146d1b4d248John Spurlock 1777340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock @Override 1787340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public boolean equals(Object o) { 1797340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock if (!(o instanceof Condition)) return false; 1807340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock if (o == this) return true; 1817340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock final Condition other = (Condition) o; 1827340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock return Objects.equals(other.id, id) 183ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock && Objects.equals(other.summary, summary) 184ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock && Objects.equals(other.line1, line1) 185ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock && Objects.equals(other.line2, line2) 186ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock && other.icon == icon 1877340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock && other.state == state 1887340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock && other.flags == flags; 1897340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 1907340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 1917340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock @Override 1927340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public int hashCode() { 193ef5693bb73ab90cc30ec9b11ee78f4351a36719aJohn Spurlock return Objects.hash(id, summary, line1, line2, icon, state, flags); 1947340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 1957340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 1967340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock @Override 1977340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public int describeContents() { 1987340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock return 0; 1997340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 2007340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 2011d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 2027340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public Condition copy() { 2037340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock final Parcel parcel = Parcel.obtain(); 2047340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock try { 2057340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock writeToParcel(parcel, 0); 2067340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock parcel.setDataPosition(0); 2077340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock return new Condition(parcel); 2087340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } finally { 2097340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock parcel.recycle(); 2107340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 2117340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 2127340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 2131d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 214e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static Uri.Builder newId(Context context) { 2151d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds return new Uri.Builder() 2161d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds .scheme(Condition.SCHEME) 2171d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds .authority(context.getPackageName()); 218e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock } 219e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock 2201d6d16d6995099afa506ecac38019a5bb8eacd86Julia Reynolds @SystemApi 221e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock public static boolean isValidId(Uri id, String pkg) { 2223e0770163686c1be83959d681976dafaf25272e1John Spurlock return id != null && SCHEME.equals(id.getScheme()) && pkg.equals(id.getAuthority()); 223e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock } 224e77bb36d48b6b8b5c3bb6a1195aca469bb237919John Spurlock 2257340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public static final Parcelable.Creator<Condition> CREATOR 2267340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock = new Parcelable.Creator<Condition>() { 2277340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock @Override 2287340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public Condition createFromParcel(Parcel source) { 2297340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock return new Condition(source); 2307340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 2317340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock 2327340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock @Override 2337340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock public Condition[] newArray(int size) { 2347340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock return new Condition[size]; 2357340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock } 2367340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock }; 2377340fc8665ae3f9f1978f42aa0e5e1da85036158John Spurlock} 238