Use Drawer in Settings app
- get rid of PreferenceActivity as much as we can and use fragments instead - add Drawer widget - add Dashboard high level entry into the Drawer (but this is work in progress and would be done in another CL) - add bypass of fragment's Header validation when launched from the Drawer but *force* validation if external call thru an Intent Be aware that WifiPickerActivity should remain for now a PreferenceActivity. It is used by SetupWizard and should not trigger running the SettingsActivity's header building code. SetupWizard is a Home during the provisionnig process and then deactivate itself as a Home but would make the Home header to appear in the Drawer (because momentarily we would have two Home). Also, verified that: - the WiFi settings still work when called from SetupWizard - when you have multiple Launchers, the Home header will appear in the list of Headers in the Drawer Change-Id: I407a5e0fdd843ad7615d3d511c416a44e3d97c90
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.deviceinfo;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ClipboardManager;
|
||||
@@ -24,7 +25,6 @@ import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.res.Resources;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Build;
|
||||
@@ -35,19 +35,15 @@ import android.os.SystemClock;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.UserHandle;
|
||||
import android.preference.Preference;
|
||||
import android.preference.PreferenceActivity;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.telephony.CellBroadcastMessage;
|
||||
import android.telephony.PhoneNumberUtils;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.android.internal.telephony.Phone;
|
||||
@@ -56,6 +52,7 @@ import com.android.internal.telephony.PhoneFactory;
|
||||
import com.android.internal.telephony.PhoneStateIntentReceiver;
|
||||
import com.android.internal.util.ArrayUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.Utils;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
@@ -75,7 +72,7 @@ import java.lang.ref.WeakReference;
|
||||
* # XMPP/buzz/tickle status : TODO
|
||||
*
|
||||
*/
|
||||
public class Status extends PreferenceActivity {
|
||||
public class Status extends SettingsPreferenceFragment {
|
||||
|
||||
private static final String KEY_DATA_STATE = "data_state";
|
||||
private static final String KEY_SERVICE_STATE = "service_state";
|
||||
@@ -166,8 +163,8 @@ public class Status extends PreferenceActivity {
|
||||
private static class MyHandler extends Handler {
|
||||
private WeakReference<Status> mStatus;
|
||||
|
||||
public MyHandler(Status activity) {
|
||||
mStatus = new WeakReference<Status>(activity);
|
||||
public MyHandler(Status status) {
|
||||
mStatus = new WeakReference<Status>(status);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -257,14 +254,14 @@ public class Status extends PreferenceActivity {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle icicle) {
|
||||
public void onCreate(Bundle icicle) {
|
||||
super.onCreate(icicle);
|
||||
|
||||
mHandler = new MyHandler(this);
|
||||
|
||||
mCM = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
|
||||
mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
|
||||
mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
|
||||
mCM = (ConnectivityManager) getSystemService(Activity.CONNECTIVITY_SERVICE);
|
||||
mTelephonyManager = (TelephonyManager)getSystemService(Activity.TELEPHONY_SERVICE);
|
||||
mWifiManager = (WifiManager) getSystemService(Activity.WIFI_SERVICE);
|
||||
|
||||
addPreferencesFromResource(R.xml.device_info_status);
|
||||
mBatteryLevel = findPreference(KEY_BATTERY_LEVEL);
|
||||
@@ -279,13 +276,14 @@ public class Status extends PreferenceActivity {
|
||||
mUnavailable = mRes.getString(R.string.status_unavailable);
|
||||
|
||||
if (UserHandle.myUserId() == UserHandle.USER_OWNER) {
|
||||
PhoneFactory.makeDefaultPhone(getActivity());
|
||||
mPhone = PhoneFactory.getDefaultPhone();
|
||||
}
|
||||
// Note - missing in zaku build, be careful later...
|
||||
mSignalStrength = findPreference(KEY_SIGNAL_STRENGTH);
|
||||
mUptime = findPreference("up_time");
|
||||
|
||||
if (mPhone == null || Utils.isWifiOnly(getApplicationContext())) {
|
||||
if (mPhone == null || Utils.isWifiOnly(getActivity())) {
|
||||
for (String key : PHONE_RELATED_ENTRIES) {
|
||||
removePreferenceFromScreen(key);
|
||||
}
|
||||
@@ -315,7 +313,7 @@ public class Status extends PreferenceActivity {
|
||||
setSummaryText(KEY_IMEI, mPhone.getDeviceId());
|
||||
|
||||
setSummaryText(KEY_IMEI_SV,
|
||||
((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
|
||||
((TelephonyManager) getSystemService(Activity.TELEPHONY_SERVICE))
|
||||
.getDeviceSoftwareVersion());
|
||||
|
||||
// device is not CDMA, do not display CDMA features
|
||||
@@ -339,7 +337,7 @@ public class Status extends PreferenceActivity {
|
||||
// If formattedNumber is null or empty, it'll display as "Unknown".
|
||||
setSummaryText(KEY_PHONE_NUMBER, formattedNumber);
|
||||
|
||||
mPhoneStateReceiver = new PhoneStateIntentReceiver(this, mHandler);
|
||||
mPhoneStateReceiver = new PhoneStateIntentReceiver(getActivity(), mHandler);
|
||||
mPhoneStateReceiver.notifySignalStrength(EVENT_SIGNAL_STRENGTH_CHANGED);
|
||||
mPhoneStateReceiver.notifyServiceState(EVENT_SERVICE_STATE_CHANGED);
|
||||
|
||||
@@ -371,34 +369,39 @@ public class Status extends PreferenceActivity {
|
||||
} else {
|
||||
removePreferenceFromScreen(KEY_SERIAL_NUMBER);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
// Make every pref on this screen copy its data to the clipboard on longpress.
|
||||
// Super convenient for capturing the IMEI, MAC addr, serial, etc.
|
||||
getListView().setOnItemLongClickListener(
|
||||
new AdapterView.OnItemLongClickListener() {
|
||||
@Override
|
||||
public boolean onItemLongClick(AdapterView<?> parent, View view,
|
||||
int position, long id) {
|
||||
ListAdapter listAdapter = (ListAdapter) parent.getAdapter();
|
||||
Preference pref = (Preference) listAdapter.getItem(position);
|
||||
new AdapterView.OnItemLongClickListener() {
|
||||
@Override
|
||||
public boolean onItemLongClick(AdapterView<?> parent, View view,
|
||||
int position, long id) {
|
||||
ListAdapter listAdapter = (ListAdapter) parent.getAdapter();
|
||||
Preference pref = (Preference) listAdapter.getItem(position);
|
||||
|
||||
ClipboardManager cm = (ClipboardManager)
|
||||
getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
cm.setText(pref.getSummary());
|
||||
Toast.makeText(
|
||||
Status.this,
|
||||
com.android.internal.R.string.text_copied,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
ClipboardManager cm = (ClipboardManager)
|
||||
getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
cm.setText(pref.getSummary());
|
||||
Toast.makeText(
|
||||
getActivity(),
|
||||
com.android.internal.R.string.text_copied,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if (mPhone != null && !Utils.isWifiOnly(getApplicationContext())) {
|
||||
if (mPhone != null && !Utils.isWifiOnly(getActivity())) {
|
||||
mPhoneStateReceiver.registerIntent();
|
||||
|
||||
updateSignalStrength();
|
||||
@@ -407,17 +410,17 @@ public class Status extends PreferenceActivity {
|
||||
mTelephonyManager.listen(mPhoneStateListener,
|
||||
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
|
||||
if (mShowLatestAreaInfo) {
|
||||
registerReceiver(mAreaInfoReceiver, new IntentFilter(CB_AREA_INFO_RECEIVED_ACTION),
|
||||
getActivity().registerReceiver(mAreaInfoReceiver, new IntentFilter(CB_AREA_INFO_RECEIVED_ACTION),
|
||||
CB_AREA_INFO_SENDER_PERMISSION, null);
|
||||
// Ask CellBroadcastReceiver to broadcast the latest area info received
|
||||
Intent getLatestIntent = new Intent(GET_LATEST_CB_AREA_INFO_ACTION);
|
||||
sendBroadcastAsUser(getLatestIntent, UserHandle.ALL,
|
||||
getActivity().sendBroadcastAsUser(getLatestIntent, UserHandle.ALL,
|
||||
CB_AREA_INFO_SENDER_PERMISSION);
|
||||
}
|
||||
}
|
||||
registerReceiver(mConnectivityReceiver, mConnectivityIntentFilter,
|
||||
android.Manifest.permission.CHANGE_NETWORK_STATE, null);
|
||||
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
getActivity().registerReceiver(mConnectivityReceiver, mConnectivityIntentFilter,
|
||||
android.Manifest.permission.CHANGE_NETWORK_STATE, null);
|
||||
getActivity().registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
mHandler.sendEmptyMessage(EVENT_UPDATE_STATS);
|
||||
}
|
||||
|
||||
@@ -425,15 +428,15 @@ public class Status extends PreferenceActivity {
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
if (mPhone != null && !Utils.isWifiOnly(getApplicationContext())) {
|
||||
if (mPhone != null && !Utils.isWifiOnly(getActivity())) {
|
||||
mPhoneStateReceiver.unregisterIntent();
|
||||
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
|
||||
}
|
||||
if (mShowLatestAreaInfo) {
|
||||
unregisterReceiver(mAreaInfoReceiver);
|
||||
getActivity().unregisterReceiver(mAreaInfoReceiver);
|
||||
}
|
||||
unregisterReceiver(mBatteryInfoReceiver);
|
||||
unregisterReceiver(mConnectivityReceiver);
|
||||
getActivity().unregisterReceiver(mBatteryInfoReceiver);
|
||||
getActivity().unregisterReceiver(mConnectivityReceiver);
|
||||
mHandler.removeMessages(EVENT_UPDATE_STATS);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user