From 0508cb5c468005bf86e70898fcd28b526f496ef7 Mon Sep 17 00:00:00 2001 From: Malcolm Chen Date: Mon, 16 Apr 2018 14:12:41 -0700 Subject: [PATCH] Clean Sms raw table when resetting network. There has been issues when Sms raw table somehow stores orphan fragments. They lead to garbled message when new fragments come in and combied with those stale ones. While we work on proper fixes, one of the options we offer to the user if it happens again, is to reset all network settings which will clean up this table. Bug: 77910620 Test: manual test Change-Id: Ib80c395fb9a1501f35716fdca43df3e5c87893c7 --- src/com/android/settings/ResetNetworkConfirm.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java index fdec66206ea..4bdd8e1dba8 100644 --- a/src/com/android/settings/ResetNetworkConfirm.java +++ b/src/com/android/settings/ResetNetworkConfirm.java @@ -32,9 +32,11 @@ import android.os.Bundle; import android.os.RecoverySystem; import android.os.UserHandle; import android.os.UserManager; +import android.provider.Telephony; import android.support.annotation.VisibleForTesting; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -151,9 +153,20 @@ public class ResetNetworkConfirm extends InstrumentedFragment { ImsManager.factoryReset(context); restoreDefaultApn(context); esimFactoryReset(context, context.getPackageName()); + // There has been issues when Sms raw table somehow stores orphan + // fragments. They lead to garbled message when new fragments come + // in and combied with those stale ones. In case this happens again, + // user can reset all network settings which will clean up this table. + cleanUpSmsRawTable(context); } }; + private void cleanUpSmsRawTable(Context context) { + ContentResolver resolver = context.getContentResolver(); + Uri uri = Uri.withAppendedPath(Telephony.Sms.CONTENT_URI, "raw/permanentDelete"); + resolver.delete(uri, null, null); + } + @VisibleForTesting void esimFactoryReset(Context context, String packageName) { if (mEraseEsim) {