summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2017-11-21 17:50:08 -0800
committerCopybara-Service <copybara-piper@google.com>2017-11-21 17:55:43 -0800
commitcd7f4a6229a033c7879788db0768fefacfb47b2b (patch)
tree3dc85361444aa55dda97f9e17bd58b8773d0925c /java/com/android/voicemail/impl
parent9d9ed5edd221d6efd5aa47688acb4595354438ab (diff)
Force disable VVM if carrier app is preloaded
This CL checks if the carrier app is installed on the system image. If so, VVM will be force disabled (user can't turn it on, can't even see the switch as if they are on a unsupported carrier). Otherwise, VVM will only be disabled by default if the carrier app is present (User can still turn it on in settings). Bug: 67496592 Test: OmtpCarrierConfigHelperTest / manual - move carrier app to /system/app PiperOrigin-RevId: 176586849 Change-Id: Idf79bdf61c600423062ca54d1b4c6e77cfcd8033
Diffstat (limited to 'java/com/android/voicemail/impl')
-rw-r--r--java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java38
1 files changed, 37 insertions, 1 deletions
diff --git a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
index f8dc4bd79..0b63e8658 100644
--- a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
+++ b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java
@@ -18,6 +18,7 @@ package com.android.voicemail.impl;
import android.annotation.TargetApi;
import android.app.PendingIntent;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
@@ -174,7 +175,13 @@ public class OmtpVvmCarrierConfigHelper {
* known protocol.
*/
public boolean isValid() {
- return mProtocol != null;
+ if (mProtocol == null) {
+ return false;
+ }
+ if (isCarrierAppPreloaded()) {
+ return false;
+ }
+ return true;
}
@Nullable
@@ -197,6 +204,11 @@ public class OmtpVvmCarrierConfigHelper {
@Nullable
public Set<String> getCarrierVvmPackageNames() {
Assert.checkArgument(isValid());
+ return getCarrierVvmPackageNamesWithoutValidation();
+ }
+
+ @Nullable
+ private Set<String> getCarrierVvmPackageNamesWithoutValidation() {
Set<String> names = getCarrierVvmPackageNames(mOverrideConfig);
if (names != null) {
return names;
@@ -498,4 +510,28 @@ public class OmtpVvmCarrierConfigHelper {
public static void setOverrideConfigForTest(PersistableBundle config) {
sOverrideConfigForTest = config;
}
+
+ private boolean isCarrierAppPreloaded() {
+ Set<String> carrierPackages = getCarrierVvmPackageNamesWithoutValidation();
+ if (carrierPackages == null) {
+ return false;
+ }
+ for (String packageName : carrierPackages) {
+ try {
+ ApplicationInfo info = getContext().getPackageManager().getApplicationInfo(packageName, 0);
+ if (!info.enabled) {
+ continue;
+ }
+ if ((info.flags & ApplicationInfo.FLAG_SYSTEM) != 0
+ || (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
+ VvmLog.i(TAG, packageName + " preloaded, force disabling dialer vvm");
+ return true;
+ }
+
+ } catch (NameNotFoundException e) {
+ continue;
+ }
+ }
+ return false;
+ }
}