summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxinhe <xinhe@google.com>2014-11-14 13:50:50 -0800
committerxinhe <xinhe@google.com>2014-11-16 11:04:34 -0800
commit0224babc0bec527dd7e44babb2cd644836f8e1fb (patch)
tree53da4d9e55a3d1cf9986a66c1dd24940f3b9b3e6
parentbe3d818f9a99b783e5d40f1829c76980c637dfb3 (diff)
downloadandroid_packages_apps_CellBroadcastReceiver-0224babc0bec527dd7e44babb2cd644836f8e1fb.tar.gz
android_packages_apps_CellBroadcastReceiver-0224babc0bec527dd7e44babb2cd644836f8e1fb.tar.bz2
android_packages_apps_CellBroadcastReceiver-0224babc0bec527dd7e44babb2cd644836f8e1fb.zip
CMAS opt-out setting does not work when switching from Secondary user to
Device owner Fix includes: (1) Only device owner is alloed to set/change preference (2) CBS intents are sent to all users (3) Cell broadcast alter is only displayed on the active user (4) Cell broadcast messages are saved in all users' mail box (5) Cell broadcast test app send intents to all users (6) Remove airplane mode trigger cellbroadcast MID configure. This should be taken care of by ServiceStateChange Bug:18223949 Change-Id: I6b6162e7f52a6cd958ef08267f7f239e70489ec8
-rw-r--r--AndroidManifest.xml1
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java13
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java7
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java11
-rw-r--r--tests/AndroidManifest.xml1
-rw-r--r--tests/src/com/android/cellbroadcastreceiver/tests/SendCdmaCmasMessages.java23
-rw-r--r--tests/src/com/android/cellbroadcastreceiver/tests/SendTestMessages.java60
7 files changed, 80 insertions, 36 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4fd97fd4..3d0eba63 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -28,6 +28,7 @@
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+ <uses-permission android:name="android.permission.MANAGE_USERS" />
<application android:name="CellBroadcastReceiverApp"
android:label="@string/app_label"
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
index ebb706c9..fa78a276 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
@@ -21,11 +21,13 @@ import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
+import android.app.ActivityManagerNative;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.IBinder;
+import android.os.RemoteException;
import android.os.UserHandle;
import android.preference.PreferenceManager;
import android.provider.Telephony;
@@ -117,7 +119,16 @@ public class CellBroadcastAlertService extends Service {
Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION.equals(action)) {
handleCellBroadcastIntent(intent);
} else if (SHOW_NEW_ALERT_ACTION.equals(action)) {
- showNewAlert(intent);
+ try {
+ if (UserHandle.myUserId() ==
+ ActivityManagerNative.getDefault().getCurrentUser().id) {
+ showNewAlert(intent);
+ } else {
+ Log.d(TAG,"Not active user, ignore the alert display");
+ }
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
} else {
Log.e(TAG, "Unrecognized intent action: " + action);
}
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java b/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java
index cb7fb8cc..5e71a24d 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java
@@ -30,6 +30,7 @@ import android.content.Intent;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
+import android.os.UserHandle;
import android.provider.Telephony;
import android.telephony.CellBroadcastMessage;
import android.view.ContextMenu;
@@ -121,8 +122,10 @@ public class CellBroadcastListActivity extends Activity {
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(0, MENU_DELETE_ALL, 0, R.string.menu_delete_all).setIcon(
android.R.drawable.ic_menu_delete);
- menu.add(0, MENU_PREFERENCES, 0, R.string.menu_preferences).setIcon(
- android.R.drawable.ic_menu_preferences);
+ if (UserHandle.myUserId() == UserHandle.USER_OWNER) {
+ menu.add(0, MENU_PREFERENCES, 0, R.string.menu_preferences).setIcon(
+ android.R.drawable.ic_menu_preferences);
+ }
}
@Override
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
index a04cc2c7..29a8842a 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
@@ -61,17 +61,12 @@ public class CellBroadcastReceiver extends BroadcastReceiver {
Log.d(TAG, "Service state changed! " + newState + " Full: " + serviceState +
" Current state=" + mServiceState);
mServiceState = newState;
- if (newState == ServiceState.STATE_IN_SERVICE ||
- newState == ServiceState.STATE_EMERGENCY_ONLY) {
+ if (((newState == ServiceState.STATE_IN_SERVICE) ||
+ (newState == ServiceState.STATE_EMERGENCY_ONLY)) &&
+ (UserHandle.myUserId() == UserHandle.USER_OWNER)) {
startConfigService(context.getApplicationContext());
}
}
- } else if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(action)) {
- boolean airplaneModeOn = intent.getBooleanExtra("state", false);
- if (DBG) log("airplaneModeOn: " + airplaneModeOn);
- if (!airplaneModeOn) {
- startConfigService(context);
- }
} else if (Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION.equals(action) ||
Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION.equals(action)) {
// If 'privileged' is false, it means that the intent was delivered to the base
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 751e7ef8..f3bfd869 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -20,6 +20,7 @@
<!-- Test Apk is signed with platform key in order to use this permission. -->
<uses-permission android:name="android.permission.BROADCAST_SMS"/>
+ <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
<!-- We add an application tag here just so that we can indicate that
this package needs to link against the android.test library,
diff --git a/tests/src/com/android/cellbroadcastreceiver/tests/SendCdmaCmasMessages.java b/tests/src/com/android/cellbroadcastreceiver/tests/SendCdmaCmasMessages.java
index f7bee6ef..8aa71061 100644
--- a/tests/src/com/android/cellbroadcastreceiver/tests/SendCdmaCmasMessages.java
+++ b/tests/src/com/android/cellbroadcastreceiver/tests/SendCdmaCmasMessages.java
@@ -16,9 +16,12 @@
package com.android.cellbroadcastreceiver.tests;
+import android.Manifest;
import android.app.Activity;
+import android.app.AppOpsManager;
import android.content.Intent;
import android.os.Parcel;
+import android.os.UserHandle;
import android.provider.Telephony;
import android.telephony.SmsCbCmasInfo;
import android.telephony.SmsCbLocation;
@@ -70,7 +73,9 @@ public class SendCdmaCmasMessages {
Intent intent = new Intent(Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", cbMessage);
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendCmasExtremeAlert(Activity activity, int messageId) {
@@ -82,7 +87,9 @@ public class SendCdmaCmasMessages {
Intent intent = new Intent(Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", cbMessage);
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendCmasSevereAlert(Activity activity, int messageId) {
@@ -94,7 +101,9 @@ public class SendCdmaCmasMessages {
Intent intent = new Intent(Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", cbMessage);
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendCmasAmberAlert(Activity activity, int messageId) {
@@ -106,7 +115,9 @@ public class SendCdmaCmasMessages {
Intent intent = new Intent(Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", cbMessage);
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendCmasMonthlyTest(Activity activity, int messageId) {
@@ -118,7 +129,9 @@ public class SendCdmaCmasMessages {
Intent intent = new Intent(Telephony.Sms.Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", cbMessage);
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
/**
diff --git a/tests/src/com/android/cellbroadcastreceiver/tests/SendTestMessages.java b/tests/src/com/android/cellbroadcastreceiver/tests/SendTestMessages.java
index e85299d2..11d562bf 100644
--- a/tests/src/com/android/cellbroadcastreceiver/tests/SendTestMessages.java
+++ b/tests/src/com/android/cellbroadcastreceiver/tests/SendTestMessages.java
@@ -16,8 +16,11 @@
package com.android.cellbroadcastreceiver.tests;
+import android.Manifest;
import android.app.Activity;
+import android.app.AppOpsManager;
import android.content.Intent;
+import android.os.UserHandle;
import android.provider.Telephony.Sms.Intents;
import android.telephony.SmsCbLocation;
import android.telephony.SmsCbMessage;
@@ -425,27 +428,31 @@ public class SendTestMessages {
public static void testSendMessage7bit(Activity activity, int serialNumber, int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTest, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitUmts(Activity activity, int serialNumber, int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTestUmts, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitNoPadding(Activity activity, int serialNumber,
int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTestNoPadding, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitNoPaddingUmts(Activity activity, int serialNumber,
int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTestNoPaddingUmts, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitMultipageGsm(Activity activity, int serialNumber,
@@ -455,21 +462,24 @@ public class SendTestMessages {
pdus[0] = gsm7BitTestMultipage1;
pdus[1] = gsm7BitTestMultipage2;
intent.putExtra("message", createFromPdus(pdus, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitMultipageUmts(Activity activity, int serialNumber,
int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTestMultipageUmts, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitWithLanguage(Activity activity, int serialNumber,
int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTestWithLanguage, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitWithLanguageInBody(Activity activity, int serialNumber,
@@ -477,7 +487,8 @@ public class SendTestMessages {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTestWithLanguageInBody, serialNumber,
category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessage7bitWithLanguageInBodyUmts(Activity activity,
@@ -485,26 +496,30 @@ public class SendTestMessages {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsm7BitTestWithLanguageInBodyUmts, serialNumber,
category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessageUcs2(Activity activity, int serialNumber, int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsmUcs2Test, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessageUcs2Umts(Activity activity, int serialNumber, int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsmUcs2TestUmts, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessageUcs2MultipageUmts(Activity activity, int serialNumber,
int category) {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsmUcs2TestMultipageUmts, serialNumber, category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessageUcs2WithLanguageInBody(Activity activity, int serialNumber,
@@ -512,7 +527,8 @@ public class SendTestMessages {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsmUcs2TestWithLanguageInBody, serialNumber,
category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendMessageUcs2WithLanguageUmts(Activity activity, int serialNumber,
@@ -520,27 +536,31 @@ public class SendTestMessages {
Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(gsmUcs2TestWithLanguageInBodyUmts, serialNumber,
category));
- activity.sendOrderedBroadcast(intent, "android.permission.RECEIVE_SMS");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
+ AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendEtwsMessageNormal(Activity activity, int serialNumber) {
Intent intent = new Intent(Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(etwsMessageNormal, serialNumber, 0));
- activity.sendOrderedBroadcast(intent,
- "android.permission.RECEIVE_EMERGENCY_BROADCAST");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendEtwsMessageCancel(Activity activity, int serialNumber) {
Intent intent = new Intent(Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(etwsMessageCancel, serialNumber, 0));
- activity.sendOrderedBroadcast(intent,
- "android.permission.RECEIVE_EMERGENCY_BROADCAST");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
public static void testSendEtwsMessageTest(Activity activity, int serialNumber) {
Intent intent = new Intent(Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
intent.putExtra("message", createFromPdu(etwsMessageTest, serialNumber, 0));
- activity.sendOrderedBroadcast(intent,
- "android.permission.RECEIVE_EMERGENCY_BROADCAST");
+ activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
+ AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
}
}