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

Commit d3361b7d authored by Brandon Bennett's avatar Brandon Bennett
Browse files

QS/PW: Check for mobile data instead of telephony permissions (1/2)

For QuickSettings and Power Widget check if there is
ConnectivityManager.TYPE_MOBILE network avaialbe directly instead of relying
on a checking for the PackageManager.FEATURE_TELEPHONY permission.  Some
devices like tilapia (Nexus 7 GSM) has mobile data but does not set the
telephony permission.

Patchset 2:
   	- Use ConnectivityManager.isNetworkSupported() instead of checking for a null
	  value returned from ConnectivityManager.getNetworkInfo(). Thanks
	- Have MobileNetworkTile use the QSUtil deviceSupportsMobileData method

Change-Id: I71bd6217cbe08622f805de4ae30a87df11340f5f
Fixes: CYAN-803
parent de198223
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -31,9 +31,9 @@ public class QSUtils {
            return (dm.getWifiDisplayStatus().getFeatureState() != WifiDisplayStatus.FEATURE_STATE_UNAVAILABLE);
        }

        public static boolean deviceSupportsTelephony(Context ctx) {
            PackageManager pm = ctx.getPackageManager();
            return pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
        public static boolean deviceSupportsMobileData(Context ctx) {
            ConnectivityManager cm = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
            return cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
        }

        public static boolean deviceSupportsBluetooth() {
+3 −6
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ import com.android.systemui.statusbar.phone.QuickSettingsContainerView;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.statusbar.policy.NetworkController.NetworkSignalChangedCallback;

import static com.android.internal.util.cm.QSUtils.deviceSupportsMobileData;

public class MobileNetworkTile extends QuickSettingsTile implements NetworkSignalChangedCallback{

    private static final int NO_OVERLAY = 0;
@@ -98,7 +100,7 @@ public class MobileNetworkTile extends QuickSettingsTile implements NetworkSigna
            int mobileSignalIconId, String mobileSignalContentDescriptionId,
            int dataTypeIconId, String dataTypeContentDescriptionId,
            String description) {
        if (deviceSupportsTelephony()) {
        if (deviceSupportsMobileData(mContext)) {
            // TODO: If view is in awaiting state, disable
            Resources r = mContext.getResources();
            mDrawable = enabled && (mobileSignalIconId > 0)
@@ -128,11 +130,6 @@ public class MobileNetworkTile extends QuickSettingsTile implements NetworkSigna
    public void onAirplaneModeChanged(boolean enabled) {
    }

    boolean deviceSupportsTelephony() {
        PackageManager pm = mContext.getPackageManager();
        return pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
    }

    @Override
    void updateQuickSettings() {
        TextView tv = (TextView) mTile.findViewById(R.id.rssi_textview);
+6 −6
Original line number Diff line number Diff line
@@ -47,7 +47,7 @@ import static com.android.internal.util.cm.QSUtils.deviceSupportsBluetooth;
import static com.android.internal.util.cm.QSUtils.deviceSupportsDockBattery;
import static com.android.internal.util.cm.QSUtils.deviceSupportsImeSwitcher;
import static com.android.internal.util.cm.QSUtils.deviceSupportsLte;
import static com.android.internal.util.cm.QSUtils.deviceSupportsTelephony;
import static com.android.internal.util.cm.QSUtils.deviceSupportsMobileData;
import static com.android.internal.util.cm.QSUtils.deviceSupportsUsbTether;
import static com.android.internal.util.cm.QSUtils.expandedDesktopEnabled;
import static com.android.internal.util.cm.QSUtils.systemProfilesEnabled;
@@ -153,14 +153,14 @@ public class QuickSettingsController {

        // Filter items not compatible with device
        boolean bluetoothSupported = deviceSupportsBluetooth();
        boolean telephonySupported = deviceSupportsTelephony(mContext);
        boolean mobileDataSupported = deviceSupportsMobileData(mContext);
        boolean lteSupported = deviceSupportsLte(mContext);

        if (!bluetoothSupported) {
            TILES_DEFAULT.remove(TILE_BLUETOOTH);
        }

        if (!telephonySupported) {
        if (!mobileDataSupported) {
            TILES_DEFAULT.remove(TILE_WIFIAP);
            TILES_DEFAULT.remove(TILE_MOBILEDATA);
            TILES_DEFAULT.remove(TILE_NETWORKMODE);
@@ -203,15 +203,15 @@ public class QuickSettingsController {
                qs = new RingerModeTile(mContext, this);
            } else if (tile.equals(TILE_SYNC)) {
                qs = new SyncTile(mContext, this);
            } else if (tile.equals(TILE_WIFIAP) && telephonySupported) {
            } else if (tile.equals(TILE_WIFIAP) && mobileDataSupported) {
                qs = new WifiAPTile(mContext, this);
            } else if (tile.equals(TILE_SCREENTIMEOUT)) {
                qs = new ScreenTimeoutTile(mContext, this);
            } else if (tile.equals(TILE_MOBILEDATA) && telephonySupported) {
            } else if (tile.equals(TILE_MOBILEDATA) && mobileDataSupported) {
                qs = new MobileNetworkTile(mContext, this);
            } else if (tile.equals(TILE_LOCKSCREEN)) {
                qs = new ToggleLockscreenTile(mContext, this);
            } else if (tile.equals(TILE_NETWORKMODE) && telephonySupported) {
            } else if (tile.equals(TILE_NETWORKMODE) && mobileDataSupported) {
                qs = new MobileNetworkTypeTile(mContext, this);
            } else if (tile.equals(TILE_AUTOROTATE)) {
                qs = new AutoRotateTile(mContext, this, mHandler);