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

Commit 39dfb52c authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Stop network scan before manual select network

Otherwise device could not connect to network.

Bug: 339226604
Test: manual - Choose network
Change-Id: Ia7e52ad94d5406cab42bd8e7b25ba7e4e13c67fc
parent 665b2a58
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -56,6 +56,8 @@ import com.google.common.collect.ImmutableList;

import kotlin.Unit;

import kotlinx.coroutines.Job;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -96,6 +98,8 @@ public class NetworkSelectSettings extends DashboardFragment {
    private AtomicBoolean mShouldFilterOutSatellitePlmn = new AtomicBoolean();

    private NetworkScanRepository mNetworkScanRepository;
    @Nullable
    private Job mNetworkScanJob = null;

    private NetworkSelectRepository mNetworkSelectRepository;

@@ -213,7 +217,8 @@ public class NetworkSelectSettings extends DashboardFragment {

    private void launchNetworkScan() {
        setProgressBarVisible(true);
        mNetworkScanRepository.launchNetworkScan(getViewLifecycleOwner(), (networkScanResult) -> {
        mNetworkScanJob = mNetworkScanRepository.launchNetworkScan(getViewLifecycleOwner(),
                (networkScanResult) -> {
                    if (isPreferenceScreenEnabled()) {
                        scanResultHandler(networkScanResult);
                    }
@@ -245,6 +250,12 @@ public class NetworkSelectSettings extends DashboardFragment {
            return false;
        }

        // Need stop network scan before manual select network.
        if (mNetworkScanJob != null) {
            mNetworkScanJob.cancel(null);
            mNetworkScanJob = null;
        }

        // Refresh the last selected item in case users reselect network.
        clearPreferenceSummary();
        if (mSelectedPreference != null) {
+5 −3
Original line number Diff line number Diff line
@@ -52,9 +52,8 @@ class NetworkScanRepository(private val context: Context, subId: Int) {
    private val telephonyManager = context.telephonyManager(subId)

    /** TODO: Move this to UI layer, when UI layer migrated to Kotlin. */
    fun launchNetworkScan(lifecycleOwner: LifecycleOwner, onResult: (NetworkScanResult) -> Unit) {
    fun launchNetworkScan(lifecycleOwner: LifecycleOwner, onResult: (NetworkScanResult) -> Unit) =
        networkScanFlow().collectLatestWithLifecycle(lifecycleOwner, action = onResult)
    }

    data class CellInfoScanKey(
        val title: String?,
@@ -101,7 +100,10 @@ class NetworkScanRepository(private val context: Context, subId: Int) {
            callback,
        )

        awaitClose { networkScan.stopScan() }
        awaitClose {
            networkScan.stopScan()
            Log.d(TAG, "network scan stopped")
        }
    }.conflate().onEach { Log.d(TAG, "networkScanFlow: $it") }.flowOn(Dispatchers.Default)

    /** Create network scan for allowed network types. */