Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0508cb5c authored by Malcolm Chen's avatar Malcolm Chen
Browse files

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
parent 9fc72be6
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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) {