DevelopmentSettings.java revision b7e46e89d77574dbb51855144ea3d46fcf220bbb
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodimport android.app.AlertDialog; 20b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodimport android.content.DialogInterface; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.BatteryManager; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceActivity; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceScreen; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.CheckBoxPreference; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Settings; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Displays preferences for application developers. 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 34b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwoodpublic class DevelopmentSettings extends PreferenceActivity 35b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener { 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String ENABLE_ADB = "enable_adb"; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEEP_SCREEN_ON = "keep_screen_on"; 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String ALLOW_MOCK_LOCATION = "allow_mock_location"; 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private CheckBoxPreference mEnableAdb; 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private CheckBoxPreference mKeepScreenOn; 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private CheckBoxPreference mAllowMockLocation; 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 45b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood // To track whether Yes was clicked in the adb warning dialog 46b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood private boolean mOkClicked; 47b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle icicle) { 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.development_prefs); 53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mEnableAdb = (CheckBoxPreference) findPreference(ENABLE_ADB); 55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mKeepScreenOn = (CheckBoxPreference) findPreference(KEEP_SCREEN_ON); 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mAllowMockLocation = (CheckBoxPreference) findPreference(ALLOW_MOCK_LOCATION); 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onResume() { 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mEnableAdb.setChecked(Settings.Secure.getInt(getContentResolver(), 64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.ADB_ENABLED, 0) != 0); 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mKeepScreenOn.setChecked(Settings.System.getInt(getContentResolver(), 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.STAY_ON_WHILE_PLUGGED_IN, 0) != 0); 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mAllowMockLocation.setChecked(Settings.Secure.getInt(getContentResolver(), 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0); 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Those monkeys kept committing suicide, so we add this property 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // to disable this functionality 76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (!TextUtils.isEmpty(SystemProperties.get("ro.monkey"))) { 77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return false; 78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (preference == mEnableAdb) { 81b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood if (mEnableAdb.isChecked()) { 82b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood mOkClicked = false; 83b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood new AlertDialog.Builder(this).setMessage( 84b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood getResources().getString(R.string.adb_warning_message)) 85b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood .setTitle(R.string.adb_warning_title) 86b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood .setIcon(android.R.drawable.ic_dialog_alert) 87b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood .setPositiveButton(android.R.string.yes, this) 88b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood .setNegativeButton(android.R.string.no, this) 89b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood .show() 90b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood .setOnDismissListener(this); 91b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood } else { 92b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 0); 93b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood } 94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (preference == mKeepScreenOn) { 95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.putInt(getContentResolver(), Settings.System.STAY_ON_WHILE_PLUGGED_IN, 96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mKeepScreenOn.isChecked() ? 97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0); 98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (preference == mAllowMockLocation) { 99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.Secure.putInt(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mAllowMockLocation.isChecked() ? 1 : 0); 101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return false; 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 105b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood 106b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood public void onClick(DialogInterface dialog, int which) { 107b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood if (which == DialogInterface.BUTTON_POSITIVE) { 108b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood mOkClicked = true; 109b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood Settings.Secure.putInt(getContentResolver(), Settings.Secure.ADB_ENABLED, 1); 110b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood } else { 111b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood // Reset the toggle 112b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood mEnableAdb.setChecked(false); 113b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood } 114b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood } 115b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood 116b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood public void onDismiss(DialogInterface dialog) { 117b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood // Assuming that onClick gets called first 118b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood if (!mOkClicked) { 119b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood mEnableAdb.setChecked(false); 120b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood } 121b7e46e89d77574dbb51855144ea3d46fcf220bbbMike Lockwood } 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 123