Force talkback to read imei # digit by digit
am: cf21d91b76
Change-Id: I1770ddd0f320240417a2deb8a7b3f515ad598a6e
diff --git a/src/com/android/settings/dashboard/conditional/Condition.java b/src/com/android/settings/dashboard/conditional/Condition.java
index 1d48d5d..758632e 100644
--- a/src/com/android/settings/dashboard/conditional/Condition.java
+++ b/src/com/android/settings/dashboard/conditional/Condition.java
@@ -38,6 +38,12 @@
// All conditions must live in this package.
Condition(ConditionManager manager) {
mManager = manager;
+ Class<?> receiverClass = getReceiverClass();
+ if (receiverClass != null && shouldAlwaysListenToBroadcast()) {
+ PackageManager pm = mManager.getContext().getPackageManager();
+ pm.setComponentEnabledSetting(new ComponentName(mManager.getContext(), receiverClass),
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0 /* flag */);
+ }
}
void restoreState(PersistableBundle bundle) {
@@ -93,6 +99,10 @@
}
private void onSilenceChanged(boolean silenced) {
+ if (shouldAlwaysListenToBroadcast()) {
+ // Don't try to disable BroadcastReceiver if we want it always on.
+ return;
+ }
Class<?> clz = getReceiverClass();
if (clz == null) {
return;
@@ -109,6 +119,10 @@
return null;
}
+ protected boolean shouldAlwaysListenToBroadcast() {
+ return false;
+ }
+
public boolean shouldShow() {
return isActive() && !isSilenced();
}
diff --git a/src/com/android/settings/dashboard/conditional/DndCondition.java b/src/com/android/settings/dashboard/conditional/DndCondition.java
index 2a5aa8a..dcab279 100644
--- a/src/com/android/settings/dashboard/conditional/DndCondition.java
+++ b/src/com/android/settings/dashboard/conditional/DndCondition.java
@@ -26,6 +26,7 @@
import android.provider.Settings;
import android.provider.Settings.Global;
import android.service.notification.ZenModeConfig;
+
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R;
@@ -143,4 +144,9 @@
}
}
}
+
+ @Override
+ protected boolean shouldAlwaysListenToBroadcast() {
+ return true;
+ }
}
diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java
index 8f0e91b..532c720 100644
--- a/src/com/android/settings/deviceinfo/StorageSettings.java
+++ b/src/com/android/settings/deviceinfo/StorageSettings.java
@@ -109,7 +109,9 @@
mStorageManager = context.getSystemService(StorageManager.class);
mStorageManager.registerListener(mStorageListener);
- sTotalInternalStorage = mStorageManager.getPrimaryStorageSize();
+ if (sTotalInternalStorage <= 0) {
+ sTotalInternalStorage = mStorageManager.getPrimaryStorageSize();
+ }
addPreferencesFromResource(R.xml.device_info_storage);
@@ -169,8 +171,11 @@
if (vol.isMountedReadable()) {
final File path = vol.getPath();
privateUsedBytes += path.getTotalSpace() - path.getFreeSpace();
- privateTotalBytes += sTotalInternalStorage > 0
- ? sTotalInternalStorage : path.getTotalSpace();
+ if (sTotalInternalStorage > 0) {
+ privateTotalBytes = sTotalInternalStorage;
+ } else {
+ privateTotalBytes += path.getTotalSpace();
+ }
}
} else if (vol.getType() == VolumeInfo.TYPE_PUBLIC) {
mExternalCategory.addPreference(
@@ -215,7 +220,6 @@
result.value, result.units));
mInternalSummary.setSummary(getString(R.string.storage_volume_used_total,
Formatter.formatFileSize(context, privateTotalBytes)));
-
if (mInternalCategory.getPreferenceCount() > 0) {
getPreferenceScreen().addPreference(mInternalCategory);
}
@@ -483,9 +487,12 @@
private void updateSummary() {
// TODO: Register listener.
- StorageManager storageManager = mContext.getSystemService(StorageManager.class);
+ final StorageManager storageManager = mContext.getSystemService(StorageManager.class);
+ if (sTotalInternalStorage <= 0) {
+ sTotalInternalStorage = storageManager.getPrimaryStorageSize();
+ }
final List<VolumeInfo> volumes = storageManager.getVolumes();
- long privateUsedBytes = 0;
+ long privateFreeBytes = 0;
long privateTotalBytes = 0;
for (VolumeInfo info : volumes) {
if (info.getType() != VolumeInfo.TYPE_PUBLIC
@@ -496,13 +503,14 @@
if (path == null) {
continue;
}
- privateUsedBytes += path.getTotalSpace() - path.getFreeSpace();
if (info.getType() == VolumeInfo.TYPE_PRIVATE && sTotalInternalStorage > 0) {
privateTotalBytes = sTotalInternalStorage;
} else {
privateTotalBytes += path.getTotalSpace();
}
+ privateFreeBytes += path.getFreeSpace();
}
+ long privateUsedBytes = privateTotalBytes - privateFreeBytes;
mLoader.setSummary(this, mContext.getString(R.string.storage_summary,
Formatter.formatFileSize(mContext, privateUsedBytes),
Formatter.formatFileSize(mContext, privateTotalBytes)));