修改记录【mt67xx_11.0】
--- a/alps/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
+++ b/alps/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
@@ -61,6 +61,11 @@ import com.android.settingslib.core.AbstractPreferenceController;
import java.util.ArrayList;
import java.util.List;
+//add start
+import android.provider.Settings;
+import android.database.ContentObserver;
+import android.os.Handler;
+//add end
/*
* Displays Wi-fi p2p settings UI
@@ -106,9 +111,43 @@ public class WifiP2pSettings extends DashboardFragment
private WifiP2pDevice mThisDevice;
private WifiP2pDeviceList mPeers = new WifiP2pDeviceList();
+ private Context mContext;//add
@VisibleForTesting String mSavedDeviceName;
+ //add by start
+ private ContentObserver mWifiP2pEnableObserver = new ContentObserver(new Handler())
{
+ @Override
+ public void onChange(boolean selfChange) {
+ boolean state = Settings.Global.getInt(mContext.getContentResolver(), "isWi
fiP2pEnable", 1) == 1; //这里如果直接用getContext()或activity.getApplicationContext()会有空指针报错
+ if (!state) {
+ if (mWifiP2pManager != null) {
+ mWifiP2pManager.cancelConnect(mChannel,
+ new WifiP2pManager.ActionListener() {
+ public void onSuccess() {
+ if (DBG) Log.d(TAG, " cancel connect success");
+ }
+ public void onFailure(int reason) {
+ if (DBG) Log.d(TAG, " cancel connect fail " + reason);
+ }
+ });
+ mWifiP2pManager.removeGroup(mChannel, new WifiP2pManager.ActionList
ener() {
+ public void onSuccess() {
+ if (DBG) Log.d(TAG, " remove group success");
+ }
+ public void onFailure(int reason) {
+ if (DBG) Log.d(TAG, " remove group fail " + reason);
+ }
+ });
+ mSelectedGroup = null;
+ }
+ }
+ handleP2pStateChanged();
+ }
+ };
+ //add end
+
@VisibleForTesting
final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
@@ -116,8 +155,12 @@ public class WifiP2pSettings extends DashboardFragment
String action = intent.getAction();
if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
- mWifiP2pEnabled = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE,
- WifiP2pManager.WIFI_P2P_STATE_DISABLED) == WifiP2pManager.WIFI_P2P_
STATE_ENABLED;
+ //add by start
+ mContext = context;
+ boolean state = Settings.Global.getInt(context.getContentResolver(),"is
WifiP2pEnable",1) == 1;
+ mWifiP2pEnabled = (intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE,
+ WifiP2pManager.WIFI_P2P_STATE_DISABLED) == WifiP2pManager.WIFI_P2P_
STATE_ENABLED) && state;
+ //add end
handleP2pStateChanged();
} else if (WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION.equals(action)) {
mPeers = (WifiP2pDeviceList) intent.getParcelableExtra(
@@ -332,7 +375,10 @@ public class WifiP2pSettings extends DashboardFragment
}
}
};
-
+ //add start
+ activity.getApplicationContext().getContentResolver().registerContentObserver(
+ Settings.Global.getUriFor("isWifiP2pEnable"), true,mWifiP2pEnableOb
server);
+ //add end
super.onActivityCreated(savedInstanceState);
}