Remove Battery settings if battery is not present
Bug: 8051556
Change-Id: I044b24e26dc3d6351c19168a2fcd085a1e761796
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 02769e1..891a0c4 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -19,9 +19,11 @@
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 @@
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 @@
((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 @@
} 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);