Loading src/com/android/settings/bluetooth/BluetoothPermissionActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class BluetoothPermissionActivity extends AlertActivity implements private void onNegative() { if (DEBUG) Log.d(TAG, "onNegative"); savePermissionChoice(mRequestType, CachedBluetoothDevice.ACCESS_UNKNOWN); savePermissionChoice(mRequestType, CachedBluetoothDevice.ACCESS_REJECTED); sendIntentToReceiver(BluetoothDevice.ACTION_CONNECTION_ACCESS_REPLY, false, null, false // dummy value, no effect since last param is null ); Loading src/com/android/settings/bluetooth/CachedBluetoothDevice.java +29 −2 Original line number Diff line number Diff line Loading @@ -130,6 +130,23 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { return; } mProfileConnectionState.put(profile, newProfileState); if (newProfileState == BluetoothProfile.STATE_DISCONNECTED) { // check whether we are disconnected with this device completely boolean isDisconnected = true; for (LocalBluetoothProfile pf: mProfileConnectionState.keySet()) { if (mProfileConnectionState.get(pf) != BluetoothProfile.STATE_DISCONNECTED) { isDisconnected = false; break; } } // if disconnected, restore permission choice. // So ACCESS_REJECTED will take effect until we are disconnected with this device. if (isDisconnected) { fetchPhonebookPermissionChoice(); fetchMessagePermissionChoice(); } } if (newProfileState == BluetoothProfile.STATE_CONNECTED) { if (!mProfiles.contains(profile)) { mRemovedProfiles.remove(profile); Loading Loading @@ -358,6 +375,8 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { for (LocalBluetoothProfile profile :getProfiles()) { mProfileConnectionState.put(profile, BluetoothProfile.STATE_DISCONNECTED); } fetchPhonebookPermissionChoice(); fetchMessagePermissionChoice(); } // TODO: do any of these need to run async on a background thread? Loading Loading @@ -649,6 +668,11 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { } void setPhonebookPermissionChoice(int permissionChoice) { mPhonebookPermissionChoice = permissionChoice; // if user reject it, don't save it to editor. if (permissionChoice == ACCESS_REJECTED) return; SharedPreferences.Editor editor = mContext.getSharedPreferences(PHONEBOOK_PREFS_NAME, Context.MODE_PRIVATE).edit(); if (permissionChoice == ACCESS_UNKNOWN) { Loading @@ -657,7 +681,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { editor.putInt(mDevice.getAddress(), permissionChoice); } editor.commit(); mPhonebookPermissionChoice = permissionChoice; } private void fetchPhonebookPermissionChoice() { Loading @@ -673,6 +696,11 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { } void setMessagePermissionChoice(int permissionChoice) { mMessagePermissionChoice = permissionChoice; // if user reject it, don't save it to editor. if (permissionChoice == ACCESS_REJECTED) return; SharedPreferences.Editor editor = mContext.getSharedPreferences(MESSAGE_PREFS_NAME, Context.MODE_PRIVATE).edit(); if (permissionChoice == ACCESS_UNKNOWN) { Loading @@ -681,7 +709,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { editor.putInt(mDevice.getAddress(), permissionChoice); } editor.commit(); mMessagePermissionChoice = permissionChoice; } private void fetchMessagePermissionChoice() { Loading Loading
src/com/android/settings/bluetooth/BluetoothPermissionActivity.java +1 −1 Original line number Diff line number Diff line Loading @@ -197,7 +197,7 @@ public class BluetoothPermissionActivity extends AlertActivity implements private void onNegative() { if (DEBUG) Log.d(TAG, "onNegative"); savePermissionChoice(mRequestType, CachedBluetoothDevice.ACCESS_UNKNOWN); savePermissionChoice(mRequestType, CachedBluetoothDevice.ACCESS_REJECTED); sendIntentToReceiver(BluetoothDevice.ACTION_CONNECTION_ACCESS_REPLY, false, null, false // dummy value, no effect since last param is null ); Loading
src/com/android/settings/bluetooth/CachedBluetoothDevice.java +29 −2 Original line number Diff line number Diff line Loading @@ -130,6 +130,23 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { return; } mProfileConnectionState.put(profile, newProfileState); if (newProfileState == BluetoothProfile.STATE_DISCONNECTED) { // check whether we are disconnected with this device completely boolean isDisconnected = true; for (LocalBluetoothProfile pf: mProfileConnectionState.keySet()) { if (mProfileConnectionState.get(pf) != BluetoothProfile.STATE_DISCONNECTED) { isDisconnected = false; break; } } // if disconnected, restore permission choice. // So ACCESS_REJECTED will take effect until we are disconnected with this device. if (isDisconnected) { fetchPhonebookPermissionChoice(); fetchMessagePermissionChoice(); } } if (newProfileState == BluetoothProfile.STATE_CONNECTED) { if (!mProfiles.contains(profile)) { mRemovedProfiles.remove(profile); Loading Loading @@ -358,6 +375,8 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { for (LocalBluetoothProfile profile :getProfiles()) { mProfileConnectionState.put(profile, BluetoothProfile.STATE_DISCONNECTED); } fetchPhonebookPermissionChoice(); fetchMessagePermissionChoice(); } // TODO: do any of these need to run async on a background thread? Loading Loading @@ -649,6 +668,11 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { } void setPhonebookPermissionChoice(int permissionChoice) { mPhonebookPermissionChoice = permissionChoice; // if user reject it, don't save it to editor. if (permissionChoice == ACCESS_REJECTED) return; SharedPreferences.Editor editor = mContext.getSharedPreferences(PHONEBOOK_PREFS_NAME, Context.MODE_PRIVATE).edit(); if (permissionChoice == ACCESS_UNKNOWN) { Loading @@ -657,7 +681,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { editor.putInt(mDevice.getAddress(), permissionChoice); } editor.commit(); mPhonebookPermissionChoice = permissionChoice; } private void fetchPhonebookPermissionChoice() { Loading @@ -673,6 +696,11 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { } void setMessagePermissionChoice(int permissionChoice) { mMessagePermissionChoice = permissionChoice; // if user reject it, don't save it to editor. if (permissionChoice == ACCESS_REJECTED) return; SharedPreferences.Editor editor = mContext.getSharedPreferences(MESSAGE_PREFS_NAME, Context.MODE_PRIVATE).edit(); if (permissionChoice == ACCESS_UNKNOWN) { Loading @@ -681,7 +709,6 @@ final class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> { editor.putInt(mDevice.getAddress(), permissionChoice); } editor.commit(); mMessagePermissionChoice = permissionChoice; } private void fetchMessagePermissionChoice() { Loading