/** Returns whether the clings are enabled or should be shown */
  private boolean areClingsEnabled() {
    if (DISABLE_CLINGS) {
      return false;
    }

    // disable clings when running in a test harness
    if (ActivityManager.isRunningInTestHarness()) return false;

    // Disable clings for accessibility when explore by touch is enabled
    final AccessibilityManager a11yManager =
        (AccessibilityManager) mLauncher.getSystemService(Launcher.ACCESSIBILITY_SERVICE);
    if (a11yManager.isTouchExplorationEnabled()) {
      return false;
    }

    // Restricted secondary users (child mode) will potentially have very few apps
    // seeded when they start up for the first time. Clings won't work well with that
    boolean supportsLimitedUsers =
        android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
    Account[] accounts = AccountManager.get(mLauncher).getAccounts();
    if (supportsLimitedUsers && accounts.length == 0) {
      UserManager um = (UserManager) mLauncher.getSystemService(Context.USER_SERVICE);
      Bundle restrictions = um.getUserRestrictions();
      if (restrictions.getBoolean(UserManager.DISALLOW_MODIFY_ACCOUNTS, false)) {
        return false;
      }
    }
    if (Settings.Secure.getInt(mLauncher.getContentResolver(), SKIP_FIRST_USE_HINTS, 0) == 1) {
      return false;
    }
    return true;
  }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Log.i(TAG, "Referrer: " + getReferrer());

    mAm = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    if (savedInstanceState != null) {
      mOverrideConfig = savedInstanceState.getParcelable(KEY_CONFIGURATION);
      if (mOverrideConfig != null) {
        applyOverrideConfiguration(mOverrideConfig);
      }
    }

    UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
    List<UserInfo> users = um.getUsers();
    mSecondUser = Integer.MAX_VALUE;
    for (UserInfo ui : users) {
      if (ui.id != 0 && mSecondUser > ui.id) {
        mSecondUser = ui.id;
      }
    }

    /*
    AlertDialog ad = new AlertDialog.Builder(this).setTitle("title").setMessage("message").create();
    ad.getWindow().getAttributes().type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
    ad.show();
    */
  }
  @Override
  public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
    final ContentResolver cr = getContentResolver();
    final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
    if (preference == mNetwork) {
      if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
        Settings.Secure.setLocationProviderEnabled(
            cr, LocationManager.NETWORK_PROVIDER, mNetwork.isChecked());
      }
    } else if (preference == mGps) {
      boolean enabled = mGps.isChecked();
      if (!um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
        Settings.Secure.setLocationProviderEnabled(cr, LocationManager.GPS_PROVIDER, enabled);
        if (mAssistedGps != null) {
          mAssistedGps.setEnabled(enabled);
        }
      }
    } else if (preference == mAssistedGps) {
      Settings.Global.putInt(
          cr, Settings.Global.ASSISTED_GPS_ENABLED, mAssistedGps.isChecked() ? 1 : 0);
    } else {
      // If we didn't handle it, let preferences handle it.
      return super.onPreferenceTreeClick(preferenceScreen, preference);
    }

    return true;
  }
Beispiel #4
0
 private void checkUser() {
   try {
     UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
     int count = um.getUserCount();
     boolean adminUser = um.isSystemUser();
     Log.i("TAG", "isAdminUser : "******" / " + adminUser);
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
  /**
   * Whether a user handle associated with the current user is that of the primary owner. That is,
   * whether there is a user handle which has an id which matches the owner's handle.
   *
   * @return Whether the current user is the primary user.
   */
  private boolean isPrimaryUser() {
    UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
    List<UserHandle> userHandles = userManager.getUserProfiles();
    for (int i = 0; i < userHandles.size(); i++) {
      if (userHandles.get(i).myUserId() == OWNER_HANDLE_ID) {
        return true;
      }
    }

    return false;
  }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.global_actions);

    final PreferenceScreen prefScreen = getPreferenceScreen();
    final ContentResolver contentResolver = getContext().getContentResolver();

    final String[] defaultActions =
        getContext()
            .getResources()
            .getStringArray(com.android.internal.R.array.config_globalActionsList);
    final List<String> defaultActionsList = Arrays.asList(defaultActions);

    final String[] allActions =
        getContext()
            .getResources()
            .getStringArray(com.android.internal.R.array.values_globalActionsList);

    final String enabledActions =
        Settings.System.getString(contentResolver, Settings.System.GLOBAL_ACTIONS_LIST);

    List<String> enabledActionsList = null;
    if (enabledActions != null) {
      enabledActionsList = Arrays.asList(enabledActions.split(","));
    }

    mGlobalActionsMap = new LinkedHashMap<String, Boolean>();
    for (String actionKey : allActions) {
      if (enabledActionsList != null) {
        mGlobalActionsMap.put(actionKey, enabledActionsList.contains(actionKey));
      } else {
        mGlobalActionsMap.put(actionKey, defaultActionsList.contains(actionKey));
      }
    }
    final UserManager um = (UserManager) getContext().getSystemService(Context.USER_SERVICE);
    boolean multiUser = um.isUserSwitcherEnabled();
    Preference userPref = null;
    int count = prefScreen.getPreferenceCount();
    for (int i = 0; i < count; i++) {
      Preference p = prefScreen.getPreference(i);
      if (p instanceof SwitchPreference) {
        SwitchPreference action = (SwitchPreference) p;
        String key = action.getKey();
        if (key.equals("users") && !multiUser) {
          userPref = action;
        }
        action.setChecked(mGlobalActionsMap.get(key));
      }
    }
    if (userPref != null) {
      prefScreen.removePreference(userPref);
    }
  }
 /** Enable or disable all providers when the master toggle is changed. */
 private void onToggleLocationAccess(boolean checked) {
   final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
   if (um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION)) {
     return;
   }
   final ContentResolver cr = getContentResolver();
   Settings.Secure.setLocationProviderEnabled(cr, LocationManager.GPS_PROVIDER, checked);
   Settings.Secure.setLocationProviderEnabled(cr, LocationManager.NETWORK_PROVIDER, checked);
   updateLocationToggles();
   updateLtoServiceStatus(getActivity(), checked);
 }
 public void updateCache(Context context) {
   UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
   if (userManager != null) {
     int currentUserId = ActivityManager.getCurrentUser();
     List<UserInfo> profiles = userManager.getProfiles(currentUserId);
     synchronized (mCurrentProfiles) {
       mCurrentProfiles.clear();
       for (UserInfo user : profiles) {
         mCurrentProfiles.put(user.id, user);
       }
     }
   }
 }
  private void createHeader() {
    Activity activity = getActivity();
    FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
    mSpinnerHeader =
        (ViewGroup)
            activity.getLayoutInflater().inflate(R.layout.apps_filter_spinner, pinnedHeader, false);
    mFilterSpinner = (Spinner) mSpinnerHeader.findViewById(R.id.filter_spinner);
    mFilterAdapter = new FilterSpinnerAdapter(this);
    mFilterSpinner.setAdapter(mFilterAdapter);
    mFilterSpinner.setOnItemSelectedListener(this);
    pinnedHeader.addView(mSpinnerHeader, 0);

    mFilterAdapter.enableFilter(getDefaultFilter());
    if (mListType == LIST_TYPE_MAIN || mListType == LIST_TYPE_NOTIFICATION) {
      if (UserManager.get(getActivity()).getUserProfiles().size() > 1) {
        mFilterAdapter.enableFilter(FILTER_APPS_PERSONAL);
        mFilterAdapter.enableFilter(FILTER_APPS_WORK);
      }
    }
    if (mListType == LIST_TYPE_NOTIFICATION) {
      mFilterAdapter.enableFilter(FILTER_APPS_BLOCKED);
      mFilterAdapter.enableFilter(FILTER_APPS_PRIORITY);
      mFilterAdapter.enableFilter(FILTER_APPS_SENSITIVE);
      mFilterAdapter.enableFilter(FILTER_APPS_NO_PEEKING);
    }
    if (mListType == LIST_TYPE_HIGH_POWER) {
      mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL);
    }
    if (mListType == LIST_TYPE_STORAGE) {
      mApplications.setOverrideFilter(new VolumeFilter(mVolumeUuid));
    }
  }
  private void cleanUpRemovedUsersLocked() {
    final List<UserInfo> users = mUserManager.getUsers(true);
    if (users == null || users.size() == 0) {
      throw new IllegalStateException("There can't be no users");
    }

    ArraySet<String> toDelete = new ArraySet<>();
    String[] fileNames = mUsageStatsDir.list();
    if (fileNames == null) {
      // No users to delete.
      return;
    }

    toDelete.addAll(Arrays.asList(fileNames));

    final int userCount = users.size();
    for (int i = 0; i < userCount; i++) {
      final UserInfo userInfo = users.get(i);
      toDelete.remove(Integer.toString(userInfo.id));
    }

    final int deleteCount = toDelete.size();
    for (int i = 0; i < deleteCount; i++) {
      deleteRecursively(new File(mUsageStatsDir, toDelete.valueAt(i)));
    }
  }
 private void addOtherUserItem(
     Context context,
     ArrayList<MergedItem> newMergedItems,
     SparseArray<MergedItem> userItems,
     MergedItem newItem) {
   MergedItem userItem = userItems.get(newItem.mUserId);
   boolean first = userItem == null || userItem.mCurSeq != mSequence;
   if (first) {
     UserInfo info = mUm.getUserInfo(newItem.mUserId);
     if (info == null) {
       // The user no longer exists, skip
       return;
     }
     if (mHideManagedProfiles && info.isManagedProfile()) {
       return;
     }
     if (userItem == null) {
       userItem = new MergedItem(newItem.mUserId);
       userItems.put(newItem.mUserId, userItem);
     } else {
       userItem.mChildren.clear();
     }
     userItem.mCurSeq = mSequence;
     userItem.mUser = new UserState();
     userItem.mUser.mInfo = info;
     userItem.mUser.mIcon = Utils.getUserIcon(context, mUm, info);
     userItem.mUser.mLabel = Utils.getUserLabel(context, info);
     newMergedItems.add(userItem);
   }
   userItem.mChildren.add(newItem);
 }
  public PermissionMonitor(Context context, INetworkManagementService netd) {
    mContext = context;
    mPackageManager = context.getPackageManager();
    mUserManager = UserManager.get(context);
    mNetd = netd;
    mIntentReceiver =
        new BroadcastReceiver() {
          @Override
          public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            int user = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
            int appUid = intent.getIntExtra(Intent.EXTRA_UID, -1);
            Uri appData = intent.getData();
            String appName = appData != null ? appData.getSchemeSpecificPart() : null;

            if (Intent.ACTION_USER_ADDED.equals(action)) {
              onUserAdded(user);
            } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
              onUserRemoved(user);
            } else if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
              onAppAdded(appName, appUid);
            } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
              onAppRemoved(appUid);
            }
          }
        };
  }
    /**
     * * Disables preferences that are less secure than required quality.
     *
     * @param quality the requested quality.
     */
    private void disableUnusablePreferences(final int quality, MutableBoolean allowBiometric) {
      final PreferenceScreen entries = getPreferenceScreen();
      final boolean onlyShowFallback =
          getActivity()
              .getIntent()
              .getBooleanExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
      final boolean weakBiometricAvailable =
          mChooseLockSettingsHelper.utils().isBiometricWeakInstalled();

      // if there are multiple users, disable "None" setting
      UserManager mUm = (UserManager) getSystemService(Context.USER_SERVICE);
      List<UserInfo> users = mUm.getUsers(true);
      final boolean singleUser = users.size() == 1;

      for (int i = entries.getPreferenceCount() - 1; i >= 0; --i) {
        Preference pref = entries.getPreference(i);
        if (pref instanceof PreferenceScreen) {
          final String key = ((PreferenceScreen) pref).getKey();
          boolean enabled = true;
          boolean visible = true;
          if (KEY_UNLOCK_SET_OFF.equals(key)) {
            enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
            visible = singleUser; // don't show when there's more than 1 user
          } else if (KEY_UNLOCK_SET_NONE.equals(key)) {
            enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
          } else if (KEY_UNLOCK_SET_BIOMETRIC_WEAK.equals(key)) {
            enabled =
                quality <= DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK
                    || allowBiometric.value;
            visible = weakBiometricAvailable; // If not available, then don't show it.
          } else if (KEY_UNLOCK_SET_PATTERN.equals(key)) {
            enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_SOMETHING;
          } else if (KEY_UNLOCK_SET_PIN.equals(key)) {
            enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
          } else if (KEY_UNLOCK_SET_PASSWORD.equals(key)) {
            enabled = quality <= DevicePolicyManager.PASSWORD_QUALITY_COMPLEX;
          }
          if (!visible || (onlyShowFallback && !allowedForFallback(key))) {
            entries.removePreference(pref);
          } else if (!enabled) {
            pref.setSummary(R.string.unlock_set_unlock_disabled_summary);
            pref.setEnabled(false);
          }
        }
      }
    }
 @Override
 public View onCreateView(
     LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
   if (UserManager.get(getActivity()).hasUserRestriction(UserManager.DISALLOW_FACTORY_RESET)) {
     return inflater.inflate(R.layout.master_clear_disallowed_screen, null);
   }
   mContentView = inflater.inflate(R.layout.master_clear_confirm, null);
   establishFinalConfirmationState();
   return mContentView;
 }
 /** Return list of other users, excluding the current user. */
 private List<UserInfo> getUsersExcluding(UserInfo excluding) {
   final List<UserInfo> users = mUserManager.getUsers();
   final Iterator<UserInfo> i = users.iterator();
   while (i.hasNext()) {
     if (i.next().id == excluding.id) {
       i.remove();
     }
   }
   return users;
 }
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    // If the user is not allowed to configure wifi, do not handle menu selections.
    if (mUserManager.hasUserRestriction(DISALLOW_CONFIG_WIFI)) return false;

    switch (item.getItemId()) {
      case MENU_ID_WPS_PBC:
        showDialog(WPS_PBC_DIALOG_ID);
        return true;
      case MENU_ID_P2P:
        if (getActivity() instanceof PreferenceActivity) {
          ((PreferenceActivity) getActivity())
              .startPreferencePanel(
                  WifiP2pSettings.class.getCanonicalName(),
                  null,
                  R.string.wifi_p2p_settings_title,
                  null,
                  this,
                  0);
        } else {
          startFragment(this, WifiP2pSettings.class.getCanonicalName(), -1, null);
        }
        return true;
      case MENU_ID_WPS_PIN:
        showDialog(WPS_PIN_DIALOG_ID);
        return true;
      case MENU_ID_SCAN:
        if (mWifiManager.isWifiEnabled()) {
          mScanner.forceScan();
        }
        return true;
      case MENU_ID_ADD_NETWORK:
        if (mWifiManager.isWifiEnabled()) {
          onAddNetworkPressed();
        }
        return true;
      case MENU_ID_ADVANCED:
        if (getActivity() instanceof PreferenceActivity) {
          ((PreferenceActivity) getActivity())
              .startPreferencePanel(
                  AdvancedWifiSettings.class.getCanonicalName(),
                  null,
                  R.string.wifi_advanced_titlebar,
                  null,
                  this,
                  0);
        } else {
          startFragment(this, AdvancedWifiSettings.class.getCanonicalName(), -1, null);
        }
        return true;
    }
    return super.onOptionsItemSelected(item);
  }
 @Override
 public void onClick(DialogInterface dialog, int which) {
   if (mReason == UNLAUNCHABLE_REASON_QUIET_MODE && which == DialogInterface.BUTTON_POSITIVE) {
     if (UserManager.get(this).trySetQuietModeDisabled(mUserId, mTarget) && mTarget != null) {
       try {
         startIntentSenderForResult(mTarget, -1, null, 0, 0, 0);
       } catch (IntentSender.SendIntentException e) {
         /* ignore */
       }
     }
   }
 }
  private PreferenceScreen createPreferenceHierarchy() {
    PreferenceScreen root = getPreferenceScreen();
    if (root != null) {
      root.removeAll();
    }
    addPreferencesFromResource(R.xml.location_settings);
    root = getPreferenceScreen();

    mLocationAccess = (SwitchPreference) root.findPreference(KEY_LOCATION_TOGGLE);
    mNetwork = (CheckBoxPreference) root.findPreference(KEY_LOCATION_NETWORK);
    mGps = (CheckBoxPreference) root.findPreference(KEY_LOCATION_GPS);
    mAssistedGps = (CheckBoxPreference) root.findPreference(KEY_ASSISTED_GPS);
    mGpsDownloadDataWifiOnly =
        (CheckBoxPreference) root.findPreference(KEY_GPS_DOWNLOAD_DATA_WIFI_ONLY);

    // Only enable these controls if this user is allowed to change location
    // sharing settings.
    final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
    boolean isToggleAllowed = !um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION);
    if (mLocationAccess != null) mLocationAccess.setEnabled(isToggleAllowed);
    if (mNetwork != null) mNetwork.setEnabled(isToggleAllowed);
    if (mGps != null) mGps.setEnabled(isToggleAllowed);
    if (mAssistedGps != null) mAssistedGps.setEnabled(isToggleAllowed);
    if (mGpsDownloadDataWifiOnly != null) mGpsDownloadDataWifiOnly.setEnabled(isToggleAllowed);

    if (!LongTermOrbits.isSupported()) {
      root.removePreference(mGpsDownloadDataWifiOnly);
      mGpsDownloadDataWifiOnly = null;
    } else {
      if (saveDownloadDataWifiOnlyPref(getActivity())) {
        root.removePreference(mGpsDownloadDataWifiOnly);
        mGpsDownloadDataWifiOnly = null;
      }
    }

    mLocationAccess.setOnPreferenceChangeListener(this);
    return root;
  }
  // Intended to be called only once at startup, after the system is ready. Installs a broadcast
  // receiver to monitor ongoing UID changes, so this shouldn't/needn't be called again.
  public synchronized void startMonitoring() {
    log("Monitoring");

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_USER_ADDED);
    intentFilter.addAction(Intent.ACTION_USER_REMOVED);
    mContext.registerReceiverAsUser(mIntentReceiver, UserHandle.ALL, intentFilter, null, null);

    intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
    intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
    intentFilter.addDataScheme("package");
    mContext.registerReceiverAsUser(mIntentReceiver, UserHandle.ALL, intentFilter, null, null);

    List<PackageInfo> apps = mPackageManager.getInstalledPackages(GET_PERMISSIONS);
    if (apps == null) {
      loge("No apps");
      return;
    }

    for (PackageInfo app : apps) {
      int uid = app.applicationInfo != null ? app.applicationInfo.uid : -1;
      if (uid < 0) {
        continue;
      }

      boolean isNetwork = hasNetworkPermission(app);
      boolean isSystem = hasSystemPermission(app);

      if (isNetwork || isSystem) {
        Boolean permission = mApps.get(uid);
        // If multiple packages share a UID (cf: android:sharedUserId) and ask for different
        // permissions, don't downgrade (i.e., if it's already SYSTEM, leave it as is).
        if (permission == null || permission == NETWORK) {
          mApps.put(uid, isSystem);
        }
      }
    }

    List<UserInfo> users = mUserManager.getUsers(true); // exclude dying users
    if (users != null) {
      for (UserInfo user : users) {
        mUsers.add(user.id);
      }
    }

    log("Users: " + mUsers.size() + ", Apps: " + mApps.size());
    update(mUsers, mApps, true);
  }
  @Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // If the user is not allowed to configure wifi, do not show the menu.
    if (mUserManager.hasUserRestriction(DISALLOW_CONFIG_WIFI)) return;

    final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
    if (mSetupWizardMode) {
      // FIXME: add setIcon() when graphics are available
      menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
          .setIcon(R.drawable.ic_wps)
          .setEnabled(wifiIsEnabled)
          .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
      menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0, R.string.wifi_add_network)
          .setEnabled(wifiIsEnabled)
          .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    } else {
      menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
          .setIcon(R.drawable.ic_wps)
          .setEnabled(wifiIsEnabled)
          .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
      menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0, R.string.wifi_add_network)
          .setIcon(R.drawable.ic_menu_add)
          .setEnabled(wifiIsEnabled)
          .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
      menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.wifi_menu_scan)
          // .setIcon(R.drawable.ic_menu_scan_network)
          .setEnabled(wifiIsEnabled)
          .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
      menu.add(Menu.NONE, MENU_ID_WPS_PIN, 0, R.string.wifi_menu_wps_pin)
          .setEnabled(wifiIsEnabled)
          .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
      if (mP2pSupported) {
        menu.add(Menu.NONE, MENU_ID_P2P, 0, R.string.wifi_menu_p2p)
            .setEnabled(wifiIsEnabled)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
      }
      menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
          // .setIcon(android.R.drawable.ic_menu_manage)
          .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
    }
    super.onCreateOptionsMenu(menu, inflater);
  }
  /**
   * Shows the latest access points available with supplimental information like the strength of
   * network and the security for it.
   */
  private void updateAccessPoints() {
    // Safeguard from some delayed event handling
    if (getActivity() == null) return;

    if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_WIFI)) {
      addMessagePreference(R.string.wifi_empty_list_user_restricted);
      return;
    }
    final int wifiState = mWifiManager.getWifiState();

    switch (wifiState) {
      case WifiManager.WIFI_STATE_ENABLED:
        // AccessPoints are automatically sorted with TreeSet.
        final Collection<AccessPoint> accessPoints = constructAccessPoints();
        getPreferenceScreen().removeAll();
        if (accessPoints.size() == 0) {
          addMessagePreference(R.string.wifi_empty_list_wifi_on);
        }
        for (AccessPoint accessPoint : accessPoints) {
          getPreferenceScreen().addPreference(accessPoint);
        }
        break;

      case WifiManager.WIFI_STATE_ENABLING:
        getPreferenceScreen().removeAll();
        break;

      case WifiManager.WIFI_STATE_DISABLING:
        addMessagePreference(R.string.wifi_stopping);
        break;

      case WifiManager.WIFI_STATE_DISABLED:
        setOffMessage();
        break;
    }
  }
  private void updateHeaderList(List<Header> target) {
    final boolean showDev =
        mDevelopmentPreferences.getBoolean(
            DevelopmentSettings.PREF_SHOW,
            android.os.Build.TYPE.equals("eng") || android.os.Build.TYPE.equals("userdebug"));
    int i = 0;

    mHeaderIndexMap.clear();
    while (i < target.size()) {
      Header header = target.get(i);
      // Ids are integers, so downcasting
      int id = (int) header.id;
      if (id == R.id.operator_settings
          || id == R.id.manufacturer_settings
          || id == R.id.advanced_settings
          || id == R.id.hybrid_settings) {
        Utils.updateHeaderToSpecificActivityFromMetaDataOrRemove(this, target, header);
      } else if (id == R.id.launcher_settings) {
        Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
        launcherIntent.addCategory(Intent.CATEGORY_HOME);
        launcherIntent.addCategory(Intent.CATEGORY_DEFAULT);

        Intent launcherPreferencesIntent = new Intent(Intent.ACTION_MAIN);
        launcherPreferencesIntent.addCategory("com.cyanogenmod.category.LAUNCHER_PREFERENCES");

        ActivityInfo defaultLauncher =
            getPackageManager()
                .resolveActivity(launcherIntent, PackageManager.MATCH_DEFAULT_ONLY)
                .activityInfo;
        launcherPreferencesIntent.setPackage(defaultLauncher.packageName);
        ResolveInfo launcherPreferences =
            getPackageManager().resolveActivity(launcherPreferencesIntent, 0);
        if (launcherPreferences != null) {
          header.intent =
              new Intent()
                  .setClassName(
                      launcherPreferences.activityInfo.packageName,
                      launcherPreferences.activityInfo.name);
        } else {
          target.remove(header);
        }
      } else if (id == R.id.wifi_settings) {
        // Remove WiFi Settings if WiFi service is not available.
        if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)) {
          target.remove(i);
        }
      } else if (id == R.id.bluetooth_settings) {
        // Remove Bluetooth Settings if Bluetooth service is not available.
        if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
          target.remove(i);
        }
      } else if (id == R.id.data_usage_settings) {
        // Remove data usage when kernel module not enabled
        final INetworkManagementService netManager =
            INetworkManagementService.Stub.asInterface(
                ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
        try {
          if (!netManager.isBandwidthControlEnabled()) {
            target.remove(i);
          }
        } catch (RemoteException e) {
          // ignored
        }
      } else if (id == R.id.account_settings) {
        int headerIndex = i + 1;
        i = insertAccountsHeaders(target, headerIndex);
      } else if (id == R.id.user_settings) {
        if (!UserHandle.MU_ENABLED
            || !UserManager.supportsMultipleUsers()
            || Utils.isMonkeyRunning()) {
          target.remove(i);
        }
      }

      if (target.get(i) == header
          && UserHandle.MU_ENABLED
          && UserHandle.myUserId() != 0
          && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, id)) {
        target.remove(i);
      }

      // Increment if the current one wasn't removed by the Utils code.
      if (target.get(i) == header) {
        // Hold on to the first header, when we need to reset to the top-level
        if (mFirstHeader == null
            && HeaderAdapter.getHeaderType(header) != HeaderAdapter.HEADER_TYPE_CATEGORY) {
          mFirstHeader = header;
        }
        mHeaderIndexMap.put(id, i);
        i++;
      }
    }
  }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
      mManageMobilePlanMessage = savedInstanceState.getString(SAVED_MANAGE_MOBILE_PLAN_MSG);
    }
    log("onCreate: mManageMobilePlanMessage=" + mManageMobilePlanMessage);

    mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    mTm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    mPm = getPackageManager();
    mUm = (UserManager) getSystemService(Context.USER_SERVICE);

    addPreferencesFromResource(R.xml.wireless_settings);

    final int myUserId = UserHandle.myUserId();
    final boolean isSecondaryUser = myUserId != UserHandle.USER_OWNER;

    final Activity activity = getActivity();
    mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
    SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
    PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
    SwitchPreference nsd = (SwitchPreference) findPreference(KEY_TOGGLE_NSD);

    mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference);
    mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam);

    mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS);

    // Remove NSD checkbox by default
    getPreferenceScreen().removePreference(nsd);
    // mNsdEnabler = new NsdEnabler(activity, nsd);

    String toggleable =
        Settings.Global.getString(
            activity.getContentResolver(), Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS);

    // enable/disable wimax depending on the value in config.xml
    final boolean isWimaxEnabled =
        !isSecondaryUser
            && this.getResources().getBoolean(com.android.internal.R.bool.config_wimaxEnabled);
    if (!isWimaxEnabled || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
      PreferenceScreen root = getPreferenceScreen();
      Preference ps = (Preference) findPreference(KEY_WIMAX_SETTINGS);
      if (ps != null) root.removePreference(ps);
    } else {
      if (toggleable == null
          || !toggleable.contains(Settings.Global.RADIO_WIMAX) && isWimaxEnabled) {
        Preference ps = (Preference) findPreference(KEY_WIMAX_SETTINGS);
        ps.setDependency(KEY_TOGGLE_AIRPLANE);
      }
    }

    // Manually set dependencies for Wifi when not toggleable.
    if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_WIFI)) {
      findPreference(KEY_VPN_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
    }
    // Disable VPN.
    if (isSecondaryUser || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) {
      removePreference(KEY_VPN_SETTINGS);
    }

    // Manually set dependencies for Bluetooth when not toggleable.
    if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_BLUETOOTH)) {
      // No bluetooth-dependent items in the list. Code kept in case one is added later.
    }

    // Manually set dependencies for NFC when not toggleable.
    if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_NFC)) {
      findPreference(KEY_TOGGLE_NFC).setDependency(KEY_TOGGLE_AIRPLANE);
      findPreference(KEY_ANDROID_BEAM_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
    }

    // Remove NFC if not available
    mNfcAdapter = NfcAdapter.getDefaultAdapter(activity);
    if (mNfcAdapter == null) {
      getPreferenceScreen().removePreference(nfc);
      getPreferenceScreen().removePreference(androidBeam);
      mNfcEnabler = null;
    }

    // Remove Mobile Network Settings and Manage Mobile Plan for secondary users,
    // if it's a wifi-only device, or if the settings are restricted.
    if (isSecondaryUser
        || Utils.isWifiOnly(getActivity())
        || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
      removePreference(KEY_MOBILE_NETWORK_SETTINGS);
      removePreference(KEY_MANAGE_MOBILE_PLAN);
    }
    // Remove Mobile Network Settings and Manage Mobile Plan
    // if config_show_mobile_plan sets false.
    final boolean isMobilePlanEnabled =
        this.getResources().getBoolean(R.bool.config_show_mobile_plan);
    if (!isMobilePlanEnabled) {
      Preference pref = findPreference(KEY_MANAGE_MOBILE_PLAN);
      if (pref != null) {
        removePreference(KEY_MANAGE_MOBILE_PLAN);
      }
    }

    // Remove Airplane Mode settings if it's a stationary device such as a TV.
    if (mPm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)) {
      removePreference(KEY_TOGGLE_AIRPLANE);
    }

    // Enable Proxy selector settings if allowed.
    Preference mGlobalProxy = findPreference(KEY_PROXY_SETTINGS);
    final DevicePolicyManager mDPM =
        (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
    // proxy UI disabled until we have better app support
    getPreferenceScreen().removePreference(mGlobalProxy);
    mGlobalProxy.setEnabled(mDPM.getGlobalProxyAdmin() == null);

    // Disable Tethering if it's not allowed or if it's a wifi-only device
    final ConnectivityManager cm =
        (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (isSecondaryUser
        || !cm.isTetheringSupported()
        || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING)) {
      getPreferenceScreen().removePreference(findPreference(KEY_TETHER_SETTINGS));
    } else {
      Preference p = findPreference(KEY_TETHER_SETTINGS);
      p.setTitle(com.android.settingslib.Utils.getTetheringLabel(cm));

      // Grey out if provisioning is not available.
      p.setEnabled(!TetherSettings.isProvisioningNeededButUnavailable(getActivity()));
    }

    // Enable link to CMAS app settings depending on the value in config.xml.
    boolean isCellBroadcastAppLinkEnabled =
        this.getResources().getBoolean(com.android.internal.R.bool.config_cellBroadcastAppLinks);
    try {
      if (isCellBroadcastAppLinkEnabled) {
        if (mPm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver")
            == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
          isCellBroadcastAppLinkEnabled = false; // CMAS app disabled
        }
      }
    } catch (IllegalArgumentException ignored) {
      isCellBroadcastAppLinkEnabled = false; // CMAS app not installed
    }
    if (isSecondaryUser
        || !isCellBroadcastAppLinkEnabled
        || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_CELL_BROADCASTS)) {
      PreferenceScreen root = getPreferenceScreen();
      Preference ps = findPreference(KEY_CELL_BROADCAST_SETTINGS);
      if (ps != null) root.removePreference(ps);
    }
  }
        @Override
        public List<String> getNonIndexableKeys(Context context) {
          final ArrayList<String> result = new ArrayList<String>();

          result.add(KEY_TOGGLE_NSD);

          final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
          final int myUserId = UserHandle.myUserId();
          final boolean isSecondaryUser = myUserId != UserHandle.USER_OWNER;
          final boolean isWimaxEnabled =
              !isSecondaryUser
                  && context
                      .getResources()
                      .getBoolean(com.android.internal.R.bool.config_wimaxEnabled);
          if (!isWimaxEnabled
              || um.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
            result.add(KEY_WIMAX_SETTINGS);
          }

          if (isSecondaryUser) { // Disable VPN
            result.add(KEY_VPN_SETTINGS);
          }

          // Remove NFC if not available
          final NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE);
          if (manager != null) {
            NfcAdapter adapter = manager.getDefaultAdapter();
            if (adapter == null) {
              result.add(KEY_TOGGLE_NFC);
              result.add(KEY_ANDROID_BEAM_SETTINGS);
            }
          }

          // Remove Mobile Network Settings and Manage Mobile Plan if it's a wifi-only device.
          if (isSecondaryUser || Utils.isWifiOnly(context)) {
            result.add(KEY_MOBILE_NETWORK_SETTINGS);
            result.add(KEY_MANAGE_MOBILE_PLAN);
          }

          // Remove Mobile Network Settings and Manage Mobile Plan
          // if config_show_mobile_plan sets false.
          final boolean isMobilePlanEnabled =
              context.getResources().getBoolean(R.bool.config_show_mobile_plan);
          if (!isMobilePlanEnabled) {
            result.add(KEY_MANAGE_MOBILE_PLAN);
          }

          final PackageManager pm = context.getPackageManager();

          // Remove Airplane Mode settings if it's a stationary device such as a TV.
          if (pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)) {
            result.add(KEY_TOGGLE_AIRPLANE);
          }

          // proxy UI disabled until we have better app support
          result.add(KEY_PROXY_SETTINGS);

          // Disable Tethering if it's not allowed or if it's a wifi-only device
          ConnectivityManager cm =
              (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (isSecondaryUser || !cm.isTetheringSupported()) {
            result.add(KEY_TETHER_SETTINGS);
          }

          // Enable link to CMAS app settings depending on the value in config.xml.
          boolean isCellBroadcastAppLinkEnabled =
              context
                  .getResources()
                  .getBoolean(com.android.internal.R.bool.config_cellBroadcastAppLinks);
          try {
            if (isCellBroadcastAppLinkEnabled) {
              if (pm.getApplicationEnabledSetting("com.android.cellbroadcastreceiver")
                  == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
                isCellBroadcastAppLinkEnabled = false; // CMAS app disabled
              }
            }
          } catch (IllegalArgumentException ignored) {
            isCellBroadcastAppLinkEnabled = false; // CMAS app not installed
          }
          if (isSecondaryUser || !isCellBroadcastAppLinkEnabled) {
            result.add(KEY_CELL_BROADCAST_SETTINGS);
          }

          return result;
        }
 /** Check if we've hit the limit of how many users can be created. */
 private boolean isUserLimitReachedLocked() {
   int nUsers = mUsers.size();
   return nUsers >= UserManager.getMaxSupportedUsers();
 }
 /** Returns true if the current user is restricted from using location. */
 private boolean isUserLocationRestricted(int userId) {
   final UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
   return um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION, new UserHandle(userId));
 }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Load preferences from xml.
    addPreferencesFromResource(FRAGMENT_RES[mXmlResId]);
    PreferenceScreen screen = getPreferenceScreen();

    if (!FeatureOption.MTK_DT_SUPPORT) {
      removePreference(screen, "dualtalk_network_info");
      removePreference(screen, "dualtalk_bandmode");
    }

    // Duplicate with Network Selecting, remove them
    removePreference(screen, "digital_standard");
    if (ModemCategory.getModemType() == ModemCategory.MODEM_TD) {
      removePreference(screen, "rat_mode");
    }

    if (!FeatureOption.MTK_DT_SUPPORT) {
      removePreference(screen, "dualtalk_network_select");
    } else {
      removePreference(screen, "network_select");
    }

    // if
    // (NfcAdapter.getDefaultAdapter(getActivity().getApplicationContext())
    // == null) {
    // removePreference(screen, "nfc");
    // }
    // it's ok
    int versionCode =
        Settings.Global.getInt(getActivity().getContentResolver(), "nfc_controller_code", -1);
    if (FRAGMENT_RES[mXmlResId] == R.xml.connectivity) {
      switch (versionCode) {
        case MTK_NFC_CHIP_TYPE_MSR3110:
          Xlog.i(TAG, "MSR3110 nfc chip, call nfc");
          removePreference(screen, "hqanfc");
          break;
        case MTK_NFC_CHIP_TYPE_MT6605:
          Xlog.i(TAG, "MT6605 nfc chip, call hqanfc");
          removePreference(screen, "nfc");
          break;
        default:
          Xlog.i(TAG, "no nfc chip support");
          removePreference(screen, "hqanfc");
          removePreference(screen, "nfc");
          break;
      }
    }
    if (!FeatureOption.MTK_NFC_SUPPORT) {
      removePreference(screen, "nfc_dta");
    }
    /*if (!FeatureOption.MTK_LOG2SERVER_APP) {
        removePreference(screen, "log2server");
    }*/

    if (FeatureOption.EVDO_DT_SUPPORT
        || !FeatureOption.MTK_DT_SUPPORT
        || SystemProperties.getInt("ril.external.md", 0) == 0) {
      removePreference(screen, "ext_md_logger");
    }

    if (!FeatureOption.MTK_SMSREG_APP) {
      removePreference(screen, "device_manager");
    }

    if (FeatureOption.MTK_BSP_PACKAGE) {
      removePreference(screen, "auto_answer");
    }

    if (ChipSupport.isFeatureSupported(ChipSupport.MTK_FM_SUPPORT)) {
      if (!ChipSupport.isFeatureSupported(ChipSupport.MTK_FM_TX_SUPPORT)) {
        removePreference(screen, "fm_transmitter");
      }
    } else {
      removePreference(screen, "fm_receiver");
      removePreference(screen, "fm_transmitter");
    }

    // AGPS is not ready if MTK_AGPS_APP isn't defined
    if (!ChipSupport.isFeatureSupported(ChipSupport.MTK_AGPS_APP)
        || !ChipSupport.isFeatureSupported(ChipSupport.MTK_GPS_SUPPORT)) {
      removePreference(screen, "location_basedservice");
    }

    if (!ChipSupport.isFeatureSupported(ChipSupport.MTK_GPS_SUPPORT)) {
      removePreference(screen, "ygps");
      removePreference(screen, "cw_test");
    }

    // MATV is not ready if HAVE_MATV_FEATURE isn't defined
    if (!ChipSupport.isFeatureSupported(ChipSupport.HAVE_MATV_FEATURE)) {
      removePreference(screen, "matv");
    }

    // BT is not ready if MTK_BT_SUPPORT isn't defined
    if (!ChipSupport.isFeatureSupported(ChipSupport.MTK_BT_SUPPORT)) {
      removePreference(screen, "bluetooth");
    }

    // wifi is not ready if MTK_WLAN_SUPPORT isn't defined
    if (!ChipSupport.isFeatureSupported(ChipSupport.MTK_WLAN_SUPPORT)) {
      removePreference(screen, "wifi");
    }

    if (!isVoiceCapable() || isWifiOnly()) {
      removePreference(screen, "auto_answer");
      removePreference(screen, "repeat_call_test");
      removePreference(screen, "video_telephony");
    }

    if (!FeatureOption.MTK_VT3G324M_SUPPORT) {
      removePreference(screen, "video_telephony");
    }

    if (isWifiOnly()) {
      removePreference(screen, "GPRS");
      removePreference(screen, "Modem");
      removePreference(screen, "NetworkInfo");
      removePreference(screen, "Baseband");
      removePreference(screen, "SIMMeLock");
      removePreference(screen, "BandMode");
      removePreference(screen, "RAT Mode");
      removePreference(screen, "SWLA");
      removePreference(screen, "ModemTest");
    }

    // if it single sim, then the flow is the same as before
    if (FeatureOption.MTK_GEMINI_SUPPORT) {
      /**
       * if it is Gemini, then the flow is : it start a TabActivity, then the TabActivity will start
       * sim1 or sim2 simLock activity Intent to launch SIM lock TabActivity
       */
      // intent.setComponent(new
      // ComponentName("com.android.simmelock","com.android.simmelock.TabLockList"));
      removePreference(screen, "simme_lock1");
    } else {
      // Intent to launch SIM lock settings
      // intent.setComponent(new
      // ComponentName("com.android.simmelock","com.android.simmelock.LockList"));
      removePreference(screen, "simme_lock2");
    }
    Xlog.i(TAG, "ChipSupport.getChip(): " + ChipSupport.getChip());
    if (ChipSupport.MTK_6589_SUPPORT > ChipSupport.getChip()) {
      removePreference(screen, "de_sense");
      removePreference(screen, "camera89");
    } else {
      removePreference(screen, "camera");
    }

    if (!FeatureOption.MTK_FD_SUPPORT) {
      removePreference(screen, "fast_dormancy");
    }

    File innerLoadIndicator = new File(INNER_LOAD_INDICATOR_FILE);
    if (!innerLoadIndicator.exists()) {
      removePreference(screen, "system_update");
    }
    if (!ChipSupport.isChipInSet(ChipSupport.CHIP_657X_SERIES_NEW)) {
      removePreference(screen, "deep_idle");
      removePreference(screen, "sleep_mode");
      removePreference(screen, "dcm");
      removePreference(screen, "pll_cg");
      removePreference(screen, "cpu_dvfs");
      removePreference(screen, "mcdi_setting");
    }

    if (!FeatureOption.MTK_CDS_EM_SUPPORT) {
      removePreference(screen, "cds_information");
    }

    Preference pref = (Preference) findPreference("cmas");
    if (pref != null && !isActivityAvailable(pref.getIntent())) {
      removePreference(screen, "cmas");
    }

    if (!FeatureOption.MTK_WORLD_PHONE) {
      removePreference(screen, "world_phone");
    }

    if (!FeatureOption.EVDO_DT_SUPPORT) {
      removePreference(screen, "saber");
    }

    String mOptr = SystemProperties.get("ro.operator.optr");
    if (!"OP01".equals(mOptr)) {
      removePreference(screen, "ConfigureCheck2_Send_Test");
      removePreference(screen, "ConfigureCheck2_Self_Test");
    }

    if ("OP09".equals(mOptr)) { // For CT
      removePreference(screen, "network_select");
      removePreference(screen, "dualtalk_network_select");
    } else {
      removePreference(screen, "cdma_network_select");
    }

    if (!FeatureOption.MTK_DEVREG_APP) {
      removePreference(screen, "device_register");
    }

    if (!FeatureOption.MTK_WFD_SUPPORT) {
      removePreference(screen, "wfd_settings");
    }

    if (!FeatureOption.MTK_LTE_DC_SUPPORT) {
      removePreference(screen, "lte_config");
    }
    if (!FeatureOption.MTK_LTE_SUPPORT) {
      removePreference(screen, "lte_network_info");
    }
    removePreference(screen, "lte_network_mode");

    if (!CipUtil.isCipSupported()) {
      removePreference(screen, "cip");
    }

    if (UserHandle.MU_ENABLED && UserManager.supportsMultipleUsers()) {
      // Remove all items used phone instance
      removePreference(screen, "bandmode");
      removePreference(screen, "te_dev_tool");
      removePreference(screen, "cds_information");
      removePreference(screen, "cfu");
      removePreference(screen, "fast_dormancy");
      removePreference(screen, "gprs");
      removePreference(screen, "hspa_info");
      removePreference(screen, "mobile_data_prefer");
      removePreference(screen, "modem_test");
      removePreference(screen, "modem_warning");
      removePreference(screen, "network_info");
      removePreference(screen, "dualtalk_network_info");
      removePreference(screen, "network_select");
      removePreference(screen, "cdma_network_select");
      removePreference(screen, "dualtalk_network_select");
      removePreference(screen, "rat_mode");
      removePreference(screen, "rf_desense_test");
      removePreference(screen, "swla");
      removePreference(screen, "simme_lock1");
      removePreference(screen, "simme_lock2");
      removePreference(screen, "world_phone");
      removePreference(screen, "lte_config");
      removePreference(screen, "lte_network_mode");
      removePreference(screen, "lte_network_info");
      removePreference(screen, "lte_tool");
    }

    if (!FeatureOption.MTK_DFO_RESOLUTION_SUPPORT) {
      removePreference(screen, "dfo");
    }
  }
 private boolean isUsbTransferAllowed() {
   UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
   return !userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER);
 }
Beispiel #29
0
 public void runGetMaxUsers() {
   System.out.println("Maximum supported users: " + UserManager.getMaxSupportedUsers());
 }