summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml1
-rw-r--r--AndroidManifest_Platform.xml1
-rw-r--r--CleanSpec.mk3
-rw-r--r--res/values/config.xml2
-rw-r--r--res/values/overlayable.xml5
-rw-r--r--res/values/strings.xml3
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java37
7 files changed, 49 insertions, 3 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 8e103d06e..44bd7ab33 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -35,6 +35,7 @@
<uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS" />
<uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
<uses-permission android:name="android.permission.READ_CELL_BROADCASTS" />
+ <uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY" />
<uses-sdk android:minSdkVersion="21"/>
diff --git a/AndroidManifest_Platform.xml b/AndroidManifest_Platform.xml
index c9a89b240..45751fd43 100644
--- a/AndroidManifest_Platform.xml
+++ b/AndroidManifest_Platform.xml
@@ -32,6 +32,7 @@
<uses-permission android:name="android.permission.DEVICE_POWER" />
<uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
<uses-permission android:name="android.permission.READ_CELL_BROADCASTS" />
+ <uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY" />
<uses-sdk android:minSdkVersion="21"/>
diff --git a/CleanSpec.mk b/CleanSpec.mk
index 43988c32d..c1ea9066f 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -48,6 +48,9 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/CellBroadcastReceiv
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/CellBroadcastAppPlatform)
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/CellBroadcastApp)
+# Build finger print update in order to trigger default permission grant policy on incremental build
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/ETC/system_build_prop_intermediates/build.prop)
+
# ************************************************
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
# ************************************************
diff --git a/res/values/config.xml b/res/values/config.xml
index 1022e8b93..0150678f1 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -55,6 +55,8 @@
<bool name="enable_led_flash">false</bool>
<!-- Whether allowing testing mode on user build or not -->
<bool name="allow_testing_mode_on_user_build">false</bool>
+ <!-- Whether to save alerts to sms inbox database -->
+ <bool name="enable_write_alerts_to_sms_inbox">false</bool>
<!-- Section for switch default value -->
<!-- Master toggle default value -->
diff --git a/res/values/overlayable.xml b/res/values/overlayable.xml
index 16cce51ca..29d602987 100644
--- a/res/values/overlayable.xml
+++ b/res/values/overlayable.xml
@@ -49,6 +49,11 @@
or not per product configuration-->
<item type="array" name="additional_cbs_channels_strings" />
<!-- END CHANNEL related configurations -->
+
+ <!-- Some countries like KR requires to display CB messages inside SMS inbox.
+ allow customization for sms sender name -->
+ <item type="string" name="sms_cb_sender_name" />
+ <item type="bool" name="enable_write_alerts_to_sms_inbox" />
</policy>
<!-- END VENDOR CUSTOMIZATION -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6f3f52962..6fb439f27 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -23,6 +23,9 @@
<!-- Label for settings screen. [CHAR LIMIT=NONE] -->
<string name="sms_cb_settings">Wireless emergency alerts</string>
+ <!-- Value of sms sender display name to be shown in SMS inbox -->
+ <string name="sms_cb_sender_name" translatable="false">Wireless emergency alerts</string>
+
<!-- Error message for users that aren't allowed to modify Cell broadcast settings [CHAR LIMIT=none] -->
<string name="cell_broadcast_settings_not_available">Wireless emergency alert settings are not available for this user</string>
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
index 694c4fdc6..82a5fd1f5 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
@@ -16,6 +16,7 @@
package com.android.cellbroadcastreceiver;
+import android.annotation.NonNull;
import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -30,6 +31,7 @@ import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.media.AudioAttributes;
import android.media.AudioManager;
+import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
@@ -284,6 +286,13 @@ public class CellBroadcastAlertService extends Service
if (provider.insertNewBroadcast(message)) {
// new message, show the alert or notification on UI thread
startService(alertIntent);
+ // mark the message as displayed to the user.
+ markMessageDisplayed(message);
+ if (CellBroadcastSettings.getResources(mContext,
+ message.getSubscriptionId())
+ .getBoolean(R.bool.enable_write_alerts_to_sms_inbox)) {
+ writeMessageToSmsInbox(message);
+ }
return true;
} else {
return false;
@@ -326,9 +335,6 @@ public class CellBroadcastAlertService extends Service
}
// Either shown the dialog, adding it to notification (non emergency, or delayed emergency),
- // mark the message as displayed to the user.
- markMessageDisplayed(cbm);
-
CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager(
mContext, cbm.getSubscriptionId());
if (channelManager.isEmergencyMessage(cbm) && !sRemindAfterCallFinish) {
@@ -814,4 +820,29 @@ public class CellBroadcastAlertService extends Service
CellBroadcastReceiverApp.clearNewMessageList();
}
}
+
+ /**
+ * Write displayed cellbroadcast messages to sms inbox
+ *
+ * @param message The cell broadcast message.
+ */
+ private void writeMessageToSmsInbox(@NonNull SmsCbMessage message) {
+ // composing SMS
+ ContentValues cv = new ContentValues();
+ cv.put(Telephony.Sms.Inbox.BODY, message.getMessageBody());
+ cv.put(Telephony.Sms.Inbox.DATE, message.getReceivedTime());
+ cv.put(Telephony.Sms.Inbox.SUBSCRIPTION_ID, message.getSubscriptionId());
+ cv.put(Telephony.Sms.Inbox.SUBJECT, CellBroadcastResources.getDialogTitleResource(mContext,
+ message));
+ cv.put(Telephony.Sms.Inbox.ADDRESS, mContext.getString(R.string.sms_cb_sender_name));
+ // store all cellbroadcast messages in the same thread.
+ cv.put(Telephony.Sms.Inbox.THREAD_ID, Telephony.Threads.getOrCreateThreadId(mContext,
+ mContext.getString(R.string.sms_cb_sender_name)));
+ Uri uri = mContext.getContentResolver().insert(Telephony.Sms.Inbox.CONTENT_URI, cv);
+ if (uri == null) {
+ Log.e(TAG, "writeMessageToSmsInbox: failed");
+ } else {
+ Log.d(TAG, "writeMessageToSmsInbox: succeed uri = " + uri);
+ }
+ }
}