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
This commit is contained in:
Malcolm Chen
2018-04-16 14:12:41 -07:00
parent 9fc72be6c8
commit 0508cb5c46

View File

@@ -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) {