summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmit Mahajan <amitmahajan@google.com>2014-09-15 11:57:06 -0700
committerAmit Mahajan <amitmahajan@google.com>2014-09-15 17:21:58 -0700
commitd60e5e6b8f9c7c81c5a170ce422190edbbc3aa6e (patch)
tree37d173e70bc800d2c0271eafe9112fb4899405a3
parentb7609e4d424a0babf30a7e997aa96f2b2c32f51e (diff)
downloadOMA-DM-d60e5e6b8f9c7c81c5a170ce422190edbbc3aa6e.tar.gz
Change to disable DMService and ConnMO for secondary user.
Bug: 17499754 Change-Id: Icd463b967ec495315bd00fc9b6d2274d971c9244
-rw-r--r--DMService/src/com/android/omadm/service/DMHelper.java16
-rw-r--r--DMService/src/com/android/omadm/service/DMInjectPackageReceiver.java3
-rw-r--r--DMService/src/com/android/omadm/service/DMIntentReceiver.java3
-rw-r--r--DMService/src/com/android/omadm/service/DMWapPushReceiver.java3
-rw-r--r--plugins/CONNMO/AndroidManifest.xml18
-rw-r--r--plugins/CONNMO/res/values/supportedPlmns.xml7
-rw-r--r--plugins/CONNMO/src/com/android/sdm/plugins/connmo/ConnmoReceiver.java91
7 files changed, 108 insertions, 33 deletions
diff --git a/DMService/src/com/android/omadm/service/DMHelper.java b/DMService/src/com/android/omadm/service/DMHelper.java
index 8251db6..600de57 100644
--- a/DMService/src/com/android/omadm/service/DMHelper.java
+++ b/DMService/src/com/android/omadm/service/DMHelper.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Process;
+import android.content.pm.PackageManager;
import android.util.Log;
import java.io.File;
@@ -148,6 +149,8 @@ final class DMHelper {
public static final String AKEY_VALUE_KEY = "akey";
+ private static boolean sfirstTriggerReceived = false;
+
// private constructor
private DMHelper() {}
@@ -356,7 +359,20 @@ final class DMHelper {
public static void cleanFotaApnResources(Context context) {
if (DBG) logd("Inside cleanFotaApnResources");
clearFotaApnSharedPreferences(context);
+ }
+ public static boolean disableIfSecondaryUser(Context context) {
+ if (sfirstTriggerReceived == false) {
+ sfirstTriggerReceived = true;
+ if (!isRunningAsOwner()) {
+ PackageManager pm = context.getPackageManager();
+ logd("Disabling com.android.omadm.service for secondary user");
+ pm.setApplicationEnabledSetting("com.android.omadm.service",
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0 );
+ return true;
+ }
+ }
+ return false;
}
private static void logd(String msg) {
diff --git a/DMService/src/com/android/omadm/service/DMInjectPackageReceiver.java b/DMService/src/com/android/omadm/service/DMInjectPackageReceiver.java
index b09e291..628a155 100644
--- a/DMService/src/com/android/omadm/service/DMInjectPackageReceiver.java
+++ b/DMService/src/com/android/omadm/service/DMInjectPackageReceiver.java
@@ -27,6 +27,9 @@ public class DMInjectPackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
+ if (DMHelper.disableIfSecondaryUser(context)) {
+ return;
+ }
if ("com.android.omadm.service.InjectPackage0".equals(intent.getAction())) {
if (DBG) Log.d(TAG, intent.getAction());
Intent iIntent = new Intent(DMIntent.ACTION_INJECT_PACKAGE_0_INTERNAL);
diff --git a/DMService/src/com/android/omadm/service/DMIntentReceiver.java b/DMService/src/com/android/omadm/service/DMIntentReceiver.java
index 8a8bab2..0f865bd 100644
--- a/DMService/src/com/android/omadm/service/DMIntentReceiver.java
+++ b/DMService/src/com/android/omadm/service/DMIntentReceiver.java
@@ -80,8 +80,7 @@ public class DMIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- if (!DMHelper.isRunningAsOwner()) {
- Log.d(TAG, "Not run from owner, don't do anything.");
+ if (DMHelper.disableIfSecondaryUser(context)) {
return;
}
diff --git a/DMService/src/com/android/omadm/service/DMWapPushReceiver.java b/DMService/src/com/android/omadm/service/DMWapPushReceiver.java
index e04f509..350a495 100644
--- a/DMService/src/com/android/omadm/service/DMWapPushReceiver.java
+++ b/DMService/src/com/android/omadm/service/DMWapPushReceiver.java
@@ -28,6 +28,9 @@ public class DMWapPushReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
+ if (DMHelper.disableIfSecondaryUser(context)) {
+ return;
+ }
String action = intent.getAction();
if (Telephony.Sms.Intents.WAP_PUSH_RECEIVED_ACTION.equals(action)) {
Log.d(TAG, action);
diff --git a/plugins/CONNMO/AndroidManifest.xml b/plugins/CONNMO/AndroidManifest.xml
index 84e41bf..9b925bb 100644
--- a/plugins/CONNMO/AndroidManifest.xml
+++ b/plugins/CONNMO/AndroidManifest.xml
@@ -3,11 +3,11 @@
package="com.android.sdm.plugins.connmo" android:sharedUserId="android.uid.phone"
android:versionCode="1" android:versionName="1.0">
- <protected-broadcast android:name="com.android.sdm.plugins.connmo.BACKUP_DM_DATA" />
- <protected-broadcast android:name="com.android.sdm.plugins.connmo.RESTORE_DM_DATA" />
- <protected-broadcast android:name="com.android.omadm.service.start_up" />
+ <protected-broadcast android:name="com.android.sdm.plugins.connmo.BACKUP_DM_DATA" />
+ <protected-broadcast android:name="com.android.sdm.plugins.connmo.RESTORE_DM_DATA" />
+ <protected-broadcast android:name="com.android.omadm.service.start_up" />
- <permission android:name="com.android.permission.CONNMO_SETTINGS" />
+ <permission android:name="com.android.permission.CONNMO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
@@ -21,8 +21,7 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="com.android.permission.WRITE_OMADM_SETTINGS" />
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- <uses-permission android:name="com.android.permission.CONNMO_SETTINGS" />
+ <uses-permission android:name="com.android.permission.CONNMO_SETTINGS" />
<application android:label="@string/app_name"
android:process="com.android.phone">
@@ -53,12 +52,7 @@
<action android:name="com.android.omadm.service.Result" />
</intent-filter>
- <!-- boot completed (after rebooting or power failure) -->
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED" />
- </intent-filter>
-
- <!-- event to handle ConnmoBootComplete -->
+ <!-- event to handle WAP push from DMService -->
<intent-filter>
<action android:name="com.android.omadm.service.wait_timer_alert" />
</intent-filter>
diff --git a/plugins/CONNMO/res/values/supportedPlmns.xml b/plugins/CONNMO/res/values/supportedPlmns.xml
new file mode 100644
index 0000000..418cfe6
--- /dev/null
+++ b/plugins/CONNMO/res/values/supportedPlmns.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string-array name="supported_plmns">
+ <item>311480</item>
+ <item>20404</item>
+ </string-array>
+</resources> \ No newline at end of file
diff --git a/plugins/CONNMO/src/com/android/sdm/plugins/connmo/ConnmoReceiver.java b/plugins/CONNMO/src/com/android/sdm/plugins/connmo/ConnmoReceiver.java
index d1c54f0..80cd08c 100644
--- a/plugins/CONNMO/src/com/android/sdm/plugins/connmo/ConnmoReceiver.java
+++ b/plugins/CONNMO/src/com/android/sdm/plugins/connmo/ConnmoReceiver.java
@@ -22,6 +22,9 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.telephony.TelephonyManager;
import android.util.Log;
import com.android.internal.telephony.Phone;
@@ -36,6 +39,8 @@ public class ConnmoReceiver extends BroadcastReceiver {
private Phone mPhone;
+ private static boolean sfirstTriggerReceived = false;
+
/**
* OEM CDMA Telephony Manager
*/
@@ -49,7 +54,13 @@ public class ConnmoReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- Log.d(TAG, "Received intent: " + intent.getAction());
+ if (disableIfSecondaryUser(context)) {
+ return;
+ }
+ if (isVerizon(context) == false) {
+ return;
+ }
+ logd("Received intent: " + intent.getAction());
try {
mPhone = PhoneFactory.getDefaultPhone();
} catch (Exception e) {
@@ -62,34 +73,33 @@ public class ConnmoReceiver extends BroadcastReceiver {
Log.e(TAG, "intent action is null");
return;
}
- Log.d(TAG, "XXX ConnmoReceiver intent.getAction(): " + action
+ logd("XXX ConnmoReceiver intent.getAction(): " + action
+ " context.getFilesDir().getPath(): " + context.getFilesDir().getPath());
- if (action.equals(Intent.ACTION_BOOT_COMPLETED) ||
- action.equals("com.android.omadm.service.wait_timer_alert")) {
+ if (action.equals("com.android.omadm.service.wait_timer_alert")) {
if (mPhone == null) {
handleConnmoRepeatDelayIntent(context, 2); //Repeat 2 sec delay
} else {
- handleConnmoBootComplete(context);
+ handleConnmoWaitTimerAlert(context);
}
} else if (action.equals("com.android.omadm.service.Result")) {
handledmServiceResult(context);
}
}
- private void handleConnmoBootComplete(Context context) {
- Log.d(TAG, "Inside handleConnmoBootComplte");
+ private void handleConnmoWaitTimerAlert(Context context) {
+ logd("Inside handleConnmoWaitTimerAlert");
if (isPhoneTypeLTE()) {
String strIMEI = mPhone.getImei();
- Log.d(TAG, "strIMEI = " + strIMEI);
+ logd("strIMEI = " + strIMEI);
wakeUpDMService(context, strIMEI, "4g");
}
}
private void handledmServiceResult(Context context) {
- Log.d(TAG, "Inside handledmServiceResult");
+ logd("Inside handledmServiceResult");
if (getAPN2DisableStatus(context).equalsIgnoreCase("yes")) {
- Log.d(TAG, "Diasble APN2 Silently");
+ logd("Diasble APN2 Silently");
startDisableAPN2Service(context);
clearAPN2DisableStatus(context);
if (getResetBPStatus(context).equalsIgnoreCase("yes")) {
@@ -97,13 +107,13 @@ public class ConnmoReceiver extends BroadcastReceiver {
}
return;
}
- Log.d(TAG, "Non APN2 disable session ,No APN2 Disable required");
+ logd("Non APN2 disable session ,No APN2 Disable required");
if (getResetBPStatus(context).equalsIgnoreCase("yes")) {
- Log.d(TAG, "Reset BP Silently");
+ logd("Reset BP Silently");
clearBPResetStatus(context);
} else {
- Log.d(TAG, "Non eHRPD enable/disable session ,No Reset BP required");
+ logd("Non eHRPD enable/disable session ,No Reset BP required");
}
}
@@ -117,12 +127,12 @@ public class ConnmoReceiver extends BroadcastReceiver {
if (getResetBPStatus == null) {
getResetBPStatus = "no";
}
- Log.d(TAG, "getResetBPStatus() = " + getResetBPStatus);
+ logd("getResetBPStatus() = " + getResetBPStatus);
return getResetBPStatus;
}
private void clearBPResetStatus(Context mContext) {
- Log.d(TAG, "Inside clearBPResetStatus");
+ logd("Inside clearBPResetStatus");
SharedPreferences p = mContext.getSharedPreferences(RESETBP_PREFERENCE_KEY, 0);
SharedPreferences.Editor ed = p.edit();
ed.clear();
@@ -136,12 +146,12 @@ public class ConnmoReceiver extends BroadcastReceiver {
if (getAPN2DisableStatus == null) {
getAPN2DisableStatus = "no";
}
- Log.d(TAG, "getAPN2DisableStatus() = " + getAPN2DisableStatus);
+ logd("getAPN2DisableStatus() = " + getAPN2DisableStatus);
return getAPN2DisableStatus;
}
private void clearAPN2DisableStatus(Context mContext) {
- Log.d(TAG, "Inside clearAPN2DisableStatus");
+ logd("Inside clearAPN2DisableStatus");
SharedPreferences p = mContext
.getSharedPreferences(ConnmoConstants.APN2_PREFERENCE_NAME, 0);
SharedPreferences.Editor ed = p.edit();
@@ -169,7 +179,7 @@ public class ConnmoReceiver extends BroadcastReceiver {
private void handleConnmoRepeatDelayIntent(Context context, int seconds) {
- Log.d(TAG, "handleConnmoRepeatDelayIntent ...");
+ logd("handleConnmoRepeatDelayIntent ...");
Intent intent = new Intent("com.android.omadm.service.wait_timer_alert");
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
@@ -180,7 +190,50 @@ public class ConnmoReceiver extends BroadcastReceiver {
// Schedule the alarm
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
- Log.d(TAG, "handleConnmoRepeatDelayIntent for " + seconds + " second done!");
+ logd("handleConnmoRepeatDelayIntent for " + seconds + " second done!");
+ }
+
+ public static boolean isRunningAsOwner() {
+ return Process.myUserHandle().isOwner();
+ }
+
+ public static boolean disableIfSecondaryUser(Context context) {
+ if (sfirstTriggerReceived == false) {
+ sfirstTriggerReceived = true;
+ if (!isRunningAsOwner()) {
+ PackageManager pm = context.getPackageManager();
+ logd("Disabling com.android.sdm.plugins.connmo for secondary user");
+ pm.setApplicationEnabledSetting("com.android.sdm.plugins.connmo",
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0 );
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean isVerizon(Context context) {
+ TelephonyManager tm = TelephonyManager.from(context);
+ String simOperator = tm.getSimOperator();
+ String imsi = tm.getSubscriberId();
+ logd("simOperator: " + simOperator + " IMSI: " + imsi);
+ if (!simOperator.isEmpty() || !imsi.isEmpty()) {
+ for (String s : context.getResources().getStringArray(R.array.supported_plmns)) {
+ if ((!simOperator.isEmpty() && s.equals(simOperator)) ||
+ (!imsi.isEmpty() && imsi.startsWith(s))) {
+ logd("We have a Verizon UICC");
+ return true;
+ }
+ }
+ } else {
+ /* If simOperator is not available, assume Verizon */
+ return true;
+ }
+
+ return false;
+ }
+
+ private static void logd(String msg) {
+ Log.d(TAG, msg);
}
} // end of ConnmoReceiver class