summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/database/FilteredNumberContract.java
blob: 0ec171b1578a0bc402a9e55515373e291a9015e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.dialer.database;

import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import android.telephony.PhoneNumberUtils;

import com.android.dialerbind.ObjectFactory;

/**
 * <p>
 * The contract between the filtered number provider and applications. Contains
 * definitions for the supported URIs and columns.
 * Currently only accessible within Dialer.
 * </p>
 */
public final class FilteredNumberContract {

    /** The authority for the filtered numbers provider */
    public static final String AUTHORITY = ObjectFactory.getFilteredNumberProviderAuthority();

    /** A content:// style uri to the authority for the filtered numbers provider */
    public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY);

    /** The type of filtering to be applied, e.g. block the number or whitelist the number. */
    public interface FilteredNumberTypes {
        static final int UNDEFINED = 0;
        /**
         * Dialer will disconnect the call without sending the caller to voicemail.
         */
        static final int BLOCKED_NUMBER = 1;
    }

    /** The original source of the filtered number, e.g. the user manually added it. */
    public interface FilteredNumberSources {
        static final int UNDEFINED = 0;
        /**
         * The user manually added this number through Dialer (e.g. from the call log or InCallUI).
         */
        static final int USER = 1;
    }

    public interface FilteredNumberColumns {
        // TYPE: INTEGER
        static final String _ID = "id";
        /**
         * Represents the number to be filtered, normalized to compare phone numbers for equality.
         *
         * TYPE: TEXT
         */
        static final String NORMALIZED_NUMBER = "normalized_number";
        /**
         * Represents the number to be filtered, for formatting and
         * used with country iso for contact lookups.
         *
         * TYPE: TEXT
         */
        static final String NUMBER = "number";
        /**
         * The country code representing the country detected when
         * the phone number was added to the database.
         * Most numbers don't have the country code, so a best guess is provided by
         * the country detector system. The country iso is also needed in order to format
         * phone numbers correctly.
         *
         * TYPE: TEXT
         */
        static final String COUNTRY_ISO = "country_iso";
        /**
         * The number of times the number has been filtered by Dialer.
         * When this number is incremented, LAST_TIME_FILTERED should also be updated to
         * the current time.
         *
         * TYPE: INTEGER
         */
        static final String TIMES_FILTERED = "times_filtered";
        /**
         * Set to the current time when the phone number is filtered.
         * When this is updated, TIMES_FILTERED should also be incremented.
         *
         * TYPE: LONG
         */
        static final String LAST_TIME_FILTERED = "last_time_filtered";
        // TYPE: LONG
        static final String CREATION_TIME = "creation_time";
        /**
         * Indicates the type of filtering to be applied.
         *
         * TYPE: INTEGER
         * See {@link FilteredNumberTypes}
         */
        static final String TYPE = "type";
        /**
         * Integer representing the original source of the filtered number.
         *
         * TYPE: INTEGER
         * See {@link FilteredNumberSources}
         */
        static final String SOURCE = "source";
    }

    /**
     * <p>
     * Constants for the table of filtered numbers.
     * </p>
     * <h3>Operations</h3>
     * <dl>
     * <dt><b>Insert</b></dt>
     * <dd>Required fields: NUMBER, NORMALIZED_NUMBER, TYPE, SOURCE.
     * A default value will be used for the other fields if left null.</dd>
     * <dt><b>Update</b></dt>
     * <dt><b>Delete</b></dt>
     * <dt><b>Query</b></dt>
     * <dd>{@link #CONTENT_URI} can be used for any query, append an ID to
     * retrieve a specific filtered number entry.</dd>
     * </dl>
     */
    public static class FilteredNumber implements BaseColumns {

        public static final String FILTERED_NUMBERS_TABLE = "filtered_numbers_table";

        public static final Uri CONTENT_URI = Uri.withAppendedPath(
                AUTHORITY_URI,
                FILTERED_NUMBERS_TABLE);

        /**
         * This utility class cannot be instantiated.
         */
        private FilteredNumber () {}

        /**
         * The MIME type of {@link #CONTENT_URI} providing a directory of
         * filtered numbers.
         */
        public static final String CONTENT_TYPE = "vnd.android.cursor.dir/filtered_numbers_table";

        /**
         * The MIME type of a {@link #CONTENT_URI} single filtered number.
         */
        public static final String CONTENT_ITEM_TYPE =
                "vnd.android.cursor.item/filtered_numbers_table";
    }
}