From dd0c1c368756f10612150a4c482e8c0df3616c10 Mon Sep 17 00:00:00 2001 From: Chen Xu Date: Mon, 21 Oct 2019 22:47:27 -0700 Subject: [PATCH] cellbroadcast provider refactor 1. expose proper APIs to query framework cellbroadcast provider 2. export framework cellbroadcast provider 3. new URI with proper permission check Bug: 135956699 Test: Build & Manual Change-Id: Id9ef1876b27bcae6b297be4cc24809239c202f6a (cherry picked from commit a32c7fc3981c3f9b4f382b6b3face8dc9eabe4a5) Merged-in: Id9ef1876b27bcae6b297be4cc24809239c202f6a --- api/system-current.txt | 6 +++ api/test-current.txt | 30 +++++++++++++ .../java/android/provider/Telephony.java | 42 ++++++++++++++++--- 3 files changed, 72 insertions(+), 6 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 48d453e7fb814..7276190ede734 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6113,15 +6113,21 @@ package android.provider { field public static final String DELIVERY_TIME = "date"; field public static final String ETWS_WARNING_TYPE = "etws_warning_type"; field public static final String GEOGRAPHICAL_SCOPE = "geo_scope"; + field public static final String GEOMETRIES = "geometries"; field public static final String LAC = "lac"; field public static final String LANGUAGE_CODE = "language"; + field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time"; field public static final String MESSAGE_BODY = "body"; + field public static final String MESSAGE_BROADCASTED = "message_broadcasted"; field public static final String MESSAGE_FORMAT = "format"; + field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI; field public static final String MESSAGE_PRIORITY = "priority"; field public static final String MESSAGE_READ = "read"; field public static final String PLMN = "plmn"; + field public static final String RECEIVED_TIME = "received_time"; field public static final String SERIAL_NUMBER = "serial_number"; field public static final String SERVICE_CATEGORY = "service_category"; + field public static final String SLOT_INDEX = "slot_index"; } public final class TimeZoneRulesDataContract { diff --git a/api/test-current.txt b/api/test-current.txt index 263dbae2ac67b..a68bef0884246 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -2377,6 +2377,36 @@ package android.provider { field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service"; } + public static final class Telephony.CellBroadcasts implements android.provider.BaseColumns { + field public static final String CID = "cid"; + field public static final String CMAS_CATEGORY = "cmas_category"; + field public static final String CMAS_CERTAINTY = "cmas_certainty"; + field public static final String CMAS_MESSAGE_CLASS = "cmas_message_class"; + field public static final String CMAS_RESPONSE_TYPE = "cmas_response_type"; + field public static final String CMAS_SEVERITY = "cmas_severity"; + field public static final String CMAS_URGENCY = "cmas_urgency"; + field @NonNull public static final android.net.Uri CONTENT_URI; + field public static final String DEFAULT_SORT_ORDER = "date DESC"; + field public static final String DELIVERY_TIME = "date"; + field public static final String ETWS_WARNING_TYPE = "etws_warning_type"; + field public static final String GEOGRAPHICAL_SCOPE = "geo_scope"; + field public static final String GEOMETRIES = "geometries"; + field public static final String LAC = "lac"; + field public static final String LANGUAGE_CODE = "language"; + field public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time"; + field public static final String MESSAGE_BODY = "body"; + field public static final String MESSAGE_BROADCASTED = "message_broadcasted"; + field public static final String MESSAGE_FORMAT = "format"; + field @NonNull @RequiresPermission(android.Manifest.permission.READ_CELL_BROADCASTS) public static final android.net.Uri MESSAGE_HISTORY_URI; + field public static final String MESSAGE_PRIORITY = "priority"; + field public static final String MESSAGE_READ = "read"; + field public static final String PLMN = "plmn"; + field public static final String RECEIVED_TIME = "received_time"; + field public static final String SERIAL_NUMBER = "serial_number"; + field public static final String SERVICE_CATEGORY = "service_category"; + field public static final String SLOT_INDEX = "slot_index"; + } + public static final class Telephony.Sms.Intents { field public static final String SMS_CARRIER_PROVISION_ACTION = "android.provider.Telephony.SMS_CARRIER_PROVISION"; } diff --git a/telephony/java/android/provider/Telephony.java b/telephony/java/android/provider/Telephony.java index d3728a6dd1786..f27b944d2cff4 100644 --- a/telephony/java/android/provider/Telephony.java +++ b/telephony/java/android/provider/Telephony.java @@ -16,6 +16,7 @@ package android.provider; +import android.Manifest; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.RequiresPermission; @@ -3944,10 +3945,11 @@ public final class Telephony { } /** - * Contains received SMS cell broadcast messages. More details are available in 3GPP TS 23.041. + * Contains received cell broadcast messages. More details are available in 3GPP TS 23.041. * @hide */ @SystemApi + @TestApi public static final class CellBroadcasts implements BaseColumns { /** @@ -3958,10 +3960,43 @@ public final class Telephony { /** * The {@code content://} URI for this table. + * Only privileged framework components running on phone or network stack uid can + * query or modify this table. */ @NonNull public static final Uri CONTENT_URI = Uri.parse("content://cellbroadcasts"); + /** + * The {@code content://} URI for query cellbroadcast message history. + * query results include following entries + * + */ + @RequiresPermission(Manifest.permission.READ_CELL_BROADCASTS) + @NonNull + public static final Uri MESSAGE_HISTORY_URI = Uri.parse("content://cellbroadcasts/history"); + /** * The subscription which received this cell broadcast message. * @deprecated use {@link #SLOT_INDEX} instead. @@ -3973,7 +4008,6 @@ public final class Telephony { /** * The slot which received this cell broadcast message. *

Type: INTEGER

- * @hide */ public static final String SLOT_INDEX = "slot_index"; @@ -4151,14 +4185,12 @@ public final class Telephony { /** * The timestamp in millisecond of when the device received the message. *

Type: BIGINT

- * @hide */ public static final String RECEIVED_TIME = "received_time"; /** * Indicates that whether the message has been broadcasted to the application. *

Type: BOOLEAN

- * @hide */ public static final String MESSAGE_BROADCASTED = "message_broadcasted"; @@ -4194,7 +4226,6 @@ public final class Telephony { * "circle|0,0|100;polygon|0,0|0,1.5|1,1|1,0;circle|100.123,100|200.123" * *

Type: TEXT

- * @hide */ public static final String GEOMETRIES = "geometries"; @@ -4206,7 +4237,6 @@ public final class Telephony { * for the alert. * *

Type: INTEGER

- * @hide */ public static final String MAXIMUM_WAIT_TIME = "maximum_wait_time";