OSDN Git Service

Update PBAP info for all pairing dialogs.
[android-x86/packages-apps-Settings.git] / src / com / android / settings / bluetooth / BluetoothPairingController.java
index ce82612..3c343c7 100644 (file)
@@ -23,12 +23,16 @@ import android.text.Editable;
 import android.util.Log;
 import android.widget.CompoundButton;
 import android.widget.CompoundButton.OnCheckedChangeListener;
+
 import com.android.settings.R;
 import com.android.settings.bluetooth.BluetoothPairingDialogFragment.BluetoothPairingDialogListener;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.settingslib.bluetooth.LocalBluetoothProfile;
+
 import java.util.Locale;
 
+import androidx.annotation.VisibleForTesting;
+
 /**
  * A controller used by {@link BluetoothPairingDialog} to manage connection state while we try to
  * pair with a bluetooth device. It includes methods that allow the
@@ -50,13 +54,16 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
 
     // Bluetooth dependencies for the connection we are trying to establish
     private LocalBluetoothManager mBluetoothManager;
-    private BluetoothDevice mDevice;
-    private int mType;
+    @VisibleForTesting
+    BluetoothDevice mDevice;
+    @VisibleForTesting
+    int mType;
     private String mUserInput;
     private String mPasskeyFormatted;
     private int mPasskey;
     private String mDeviceName;
     private LocalBluetoothProfile mPbapClientProfile;
+    private boolean mPbapAllowed;
 
     /**
      * Creates an instance of a BluetoothPairingController.
@@ -81,20 +88,25 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
         mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
         mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
         mPasskeyFormatted = formatKey(mPasskey);
-
     }
 
     @Override
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
         if (isChecked) {
-            mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+            mPbapAllowed = true;
         } else {
-            mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
+            mPbapAllowed = false;
         }
     }
 
     @Override
     public void onDialogPositiveClick(BluetoothPairingDialogFragment dialog) {
+        if (mPbapAllowed) {
+            mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+        } else {
+            mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
+        }
+
         if (getDialogType() == USER_ENTRY_DIALOG) {
             onPair(mUserInput);
         } else {
@@ -104,6 +116,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
 
     @Override
     public void onDialogNegativeClick(BluetoothPairingDialogFragment dialog) {
+        mDevice.setPhonebookAccessPermission(BluetoothDevice.ACCESS_REJECTED);
         onCancel();
     }
 
@@ -172,6 +185,22 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
     }
 
     /**
+     * Update Phone book permission
+     *
+     */
+     public void  setContactSharingState() {
+        if ((mDevice.getPhonebookAccessPermission() != BluetoothDevice.ACCESS_ALLOWED)
+                && (mDevice.getPhonebookAccessPermission() != BluetoothDevice.ACCESS_REJECTED)) {
+                 if (mDevice.getBluetoothClass().getDeviceClass()
+                        == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE) {
+                    onCheckedChanged(null, true);
+            } else {
+                onCheckedChanged(null, false);
+            }
+        }
+    }
+
+    /**
      * A method for querying if the provided editable is a valid passkey/pin format for this device.
      *
      * @param s - The passkey/pin