Remove Battery settings if battery is not present
Bug: 8051556 Change-Id: I044b24e26dc3d6351c19168a2fcd085a1e761796
This commit is contained in:
@@ -19,9 +19,11 @@ package com.android.settings;
|
||||
import android.accounts.Account;
|
||||
import android.accounts.AccountManager;
|
||||
import android.accounts.OnAccountsUpdateListener;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.RestrictionEntry;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ActivityInfo;
|
||||
@@ -134,6 +136,23 @@ public class Settings extends PreferenceActivity
|
||||
private Header mLastHeader;
|
||||
private boolean mListeningToAccountUpdates;
|
||||
|
||||
private boolean mBatteryPresent = true;
|
||||
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
|
||||
boolean batteryPresent = Utils.isBatteryPresent(intent);
|
||||
|
||||
if (mBatteryPresent != batteryPresent) {
|
||||
mBatteryPresent = batteryPresent;
|
||||
invalidateHeaders();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
if (getIntent().hasExtra(EXTRA_UI_OPTIONS)) {
|
||||
@@ -218,12 +237,16 @@ public class Settings extends PreferenceActivity
|
||||
((HeaderAdapter) listAdapter).resume();
|
||||
}
|
||||
invalidateHeaders();
|
||||
|
||||
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
unregisterReceiver(mBatteryInfoReceiver);
|
||||
|
||||
ListAdapter listAdapter = getListAdapter();
|
||||
if (listAdapter instanceof HeaderAdapter) {
|
||||
((HeaderAdapter) listAdapter).pause();
|
||||
@@ -439,6 +462,12 @@ public class Settings extends PreferenceActivity
|
||||
} catch (RemoteException e) {
|
||||
// ignored
|
||||
}
|
||||
} else if (id == R.id.battery_settings) {
|
||||
// Remove battery settings when battery is not available. (e.g. TV)
|
||||
|
||||
if (!mBatteryPresent) {
|
||||
target.remove(i);
|
||||
}
|
||||
} else if (id == R.id.account_settings) {
|
||||
int headerIndex = i + 1;
|
||||
i = insertAccountsHeaders(target, headerIndex);
|
||||
|
@@ -386,17 +386,22 @@ public class Utils {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isBatteryPresent(Intent batteryChangedIntent) {
|
||||
return batteryChangedIntent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
|
||||
}
|
||||
|
||||
public static String getBatteryPercentage(Intent batteryChangedIntent) {
|
||||
int level = batteryChangedIntent.getIntExtra("level", 0);
|
||||
int scale = batteryChangedIntent.getIntExtra("scale", 100);
|
||||
int level = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
|
||||
int scale = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
|
||||
return String.valueOf(level * 100 / scale) + "%";
|
||||
}
|
||||
|
||||
public static String getBatteryStatus(Resources res, Intent batteryChangedIntent) {
|
||||
final Intent intent = batteryChangedIntent;
|
||||
|
||||
int plugType = intent.getIntExtra("plugged", 0);
|
||||
int status = intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN);
|
||||
int plugType = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0);
|
||||
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
|
||||
BatteryManager.BATTERY_STATUS_UNKNOWN);
|
||||
String statusString;
|
||||
if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
|
||||
statusString = res.getString(R.string.battery_info_status_charging);
|
||||
|
Reference in New Issue
Block a user