1 
2 /*
3  * Copyright (C) 2015 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package com.android.contacts.compat;
19 
20 import android.provider.ContactsContract.ProviderStatus;
21 
22 /**
23  * This class contains constants from the pre-M version of ContactsContract.ProviderStatus class
24  * and also the mappings between pre-M constants and M constants for compatibility purpose,
25  * because ProviderStatus class constant names and values changed and the class became visible in
26  * API level 23.
27  */
28 public class ProviderStatusCompat {
29     /**
30      * Not instantiable.
31      */
ProviderStatusCompat()32     private ProviderStatusCompat() {
33     }
34 
35     public static final boolean USE_CURRENT_VERSION = CompatUtils.isMarshmallowCompatible();
36 
37     public static final int STATUS_EMPTY = USE_CURRENT_VERSION ?
38             ProviderStatus.STATUS_EMPTY : ProviderStatusCompat.STATUS_NO_ACCOUNTS_NO_CONTACTS;
39 
40     public static final int STATUS_BUSY = USE_CURRENT_VERSION ?
41             ProviderStatus.STATUS_BUSY : ProviderStatusCompat.STATUS_UPGRADING;
42 
43     /**
44      * Default status of the provider, using the actual constant to guard against errors
45      */
46     public static final int STATUS_NORMAL = ProviderStatus.STATUS_NORMAL;
47 
48     /**
49      * The following three constants are from pre-M.
50      *
51      * The status used when the provider is in the process of upgrading.  Contacts
52      * are temporarily unaccessible.
53      */
54     private static final int STATUS_UPGRADING = 1;
55 
56     /**
57      * The status used during a locale change.
58      */
59     public static final int STATUS_CHANGING_LOCALE = 3;
60 
61     /**
62      * The status that indicates that there are no accounts and no contacts
63      * on the device.
64      */
65     private static final int STATUS_NO_ACCOUNTS_NO_CONTACTS = 4;
66 }
67