diff options
author | Amit Mahajan <amitmahajan@google.com> | 2014-09-15 11:57:06 -0700 |
---|---|---|
committer | Amit Mahajan <amitmahajan@google.com> | 2014-09-15 17:21:58 -0700 |
commit | d60e5e6b8f9c7c81c5a170ce422190edbbc3aa6e (patch) | |
tree | 37d173e70bc800d2c0271eafe9112fb4899405a3 | |
parent | b7609e4d424a0babf30a7e997aa96f2b2c32f51e (diff) | |
download | OMA-DM-d60e5e6b8f9c7c81c5a170ce422190edbbc3aa6e.tar.gz |
Change to disable DMService and ConnMO for secondary user.
Bug: 17499754
Change-Id: Icd463b967ec495315bd00fc9b6d2274d971c9244
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 |