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

Commit a1768aec authored by Ruthwar Kumar Ambeer's avatar Ruthwar Kumar Ambeer Committed by Linux Build Service Account
Browse files

Invoke vendor part of the MobileNetworkSettings

Using vendor part of the MobileNetworkSettings
rather than default one if NetworkSettings
Apk is available.

Change-Id: Iebd506bceedcfec31c712cd85a612b3b5e36926b
parent 3862cf4b
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -22,9 +22,12 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.app.admin.DevicePolicyManager;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.ConnectivityManager;
@@ -86,6 +89,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
    private PackageManager mPm;
    private UserManager mUm;

    boolean mIsNetworkSettingsAvailable = false;

    private static final int MANAGE_MOBILE_PLAN_DIALOG_ID = 1;
    private static final String SAVED_MANAGE_MOBILE_PLAN_MSG = "mManageMobilePlanMessage";

@@ -108,11 +113,45 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
            return true;
        } else if (preference == findPreference(KEY_MANAGE_MOBILE_PLAN)) {
            onManageMobilePlanClick();
        } else if (preference == findPreference(KEY_MOBILE_NETWORK_SETTINGS)
                && mIsNetworkSettingsAvailable) {
            onMobileNetworkSettingsClick();
            return true;
        }
        // Let the intents be launched by the Preference manager
        return super.onPreferenceTreeClick(preference);
    }

    /**
     * check whether NetworkSetting apk exist in system, if yes, return true, else
     * return false.
     */
    private boolean isNetworkSettingsApkAvailable() {

            // check whether the target handler exist in system
            Intent intent = new Intent("org.codeaurora.settings.NETWORK_OPERATOR_SETTINGS_ASYNC");
            List<ResolveInfo> list = mPm.queryIntentActivities(intent, 0);
            for (ResolveInfo resolveInfo : list){
                // check is it installed in system.img, exclude the application
                // installed by user
                if ((resolveInfo.activityInfo.applicationInfo.flags &
                        ApplicationInfo.FLAG_SYSTEM) != 0) {
                    return true;
                }
            }
        return false;
    }

    public void onMobileNetworkSettingsClick() {
        log("onMobileNetworkSettingsClick:");
        final Intent intent = new Intent(Intent.ACTION_MAIN);
        log("Qcom Proprietary MobileNetworkSettings Enabled");
        // prepare intent to start MobileNetworkSettings activity from
        // Qcom Proprietary
        intent.setComponent(new ComponentName("com.qualcomm.qti.networksetting",
               "com.qualcomm.qti.networksetting.MobileNetworkSettings"));
        startActivity(intent);
    }
    private String mManageMobilePlanMessage;
    public void onManageMobilePlanClick() {
        log("onManageMobilePlanClick:");
@@ -293,6 +332,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
                        UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) {
            removePreference(KEY_MOBILE_NETWORK_SETTINGS);
            removePreference(KEY_MANAGE_MOBILE_PLAN);
        } else {
            mIsNetworkSettingsAvailable = isNetworkSettingsApkAvailable();
        }
        // Remove Mobile Network Settings and Manage Mobile Plan
        // if config_show_mobile_plan sets false.