Always show pairing dialog for device-specific keyboard.
Bug: 22876536 Change-Id: Ief9f6343d435747050bb7910f934e4777f5116de
This commit is contained in:
@@ -65,8 +65,10 @@ public final class BluetoothPairingRequest extends BroadcastReceiver {
|
|||||||
PowerManager powerManager =
|
PowerManager powerManager =
|
||||||
(PowerManager)context.getSystemService(Context.POWER_SERVICE);
|
(PowerManager)context.getSystemService(Context.POWER_SERVICE);
|
||||||
String deviceAddress = device != null ? device.getAddress() : null;
|
String deviceAddress = device != null ? device.getAddress() : null;
|
||||||
if (powerManager.isScreenOn() &&
|
String deviceName = device != null ? device.getName() : null;
|
||||||
LocalBluetoothPreferences.shouldShowDialogInForeground(context, deviceAddress)) {
|
boolean shouldShowDialog= LocalBluetoothPreferences.shouldShowDialogInForeground(
|
||||||
|
context, deviceAddress, deviceName);
|
||||||
|
if (powerManager.isInteractive() && shouldShowDialog) {
|
||||||
// Since the screen is on and the BT-related activity is in the foreground,
|
// Since the screen is on and the BT-related activity is in the foreground,
|
||||||
// just open the dialog
|
// just open the dialog
|
||||||
context.startActivity(pairingIntent);
|
context.startActivity(pairingIntent);
|
||||||
|
@@ -107,6 +107,7 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver {
|
|||||||
connectionAccessIntent.putExtra(BluetoothDevice.EXTRA_CLASS_NAME, mReturnClass);
|
connectionAccessIntent.putExtra(BluetoothDevice.EXTRA_CLASS_NAME, mReturnClass);
|
||||||
|
|
||||||
String deviceAddress = mDevice != null ? mDevice.getAddress() : null;
|
String deviceAddress = mDevice != null ? mDevice.getAddress() : null;
|
||||||
|
String deviceName = mDevice != null ? mDevice.getName() : null;
|
||||||
String title = null;
|
String title = null;
|
||||||
String message = null;
|
String message = null;
|
||||||
PowerManager powerManager =
|
PowerManager powerManager =
|
||||||
@@ -114,7 +115,7 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver {
|
|||||||
|
|
||||||
if (powerManager.isScreenOn()
|
if (powerManager.isScreenOn()
|
||||||
&& LocalBluetoothPreferences.shouldShowDialogInForeground(
|
&& LocalBluetoothPreferences.shouldShowDialogInForeground(
|
||||||
context, deviceAddress)) {
|
context, deviceAddress, deviceName)) {
|
||||||
context.startActivity(connectionAccessIntent);
|
context.startActivity(connectionAccessIntent);
|
||||||
} else {
|
} else {
|
||||||
// Acquire wakelock so that LCD comes up since screen is off
|
// Acquire wakelock so that LCD comes up since screen is off
|
||||||
@@ -134,27 +135,27 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver {
|
|||||||
deleteIntent.putExtra(BluetoothDevice.EXTRA_CONNECTION_ACCESS_RESULT,
|
deleteIntent.putExtra(BluetoothDevice.EXTRA_CONNECTION_ACCESS_RESULT,
|
||||||
BluetoothDevice.CONNECTION_ACCESS_NO);
|
BluetoothDevice.CONNECTION_ACCESS_NO);
|
||||||
deleteIntent.putExtra(BluetoothDevice.EXTRA_ACCESS_REQUEST_TYPE, mRequestType);
|
deleteIntent.putExtra(BluetoothDevice.EXTRA_ACCESS_REQUEST_TYPE, mRequestType);
|
||||||
String deviceName = mDevice != null ? mDevice.getAliasName() : null;
|
String deviceAlias = mDevice != null ? mDevice.getAliasName() : null;
|
||||||
switch (mRequestType) {
|
switch (mRequestType) {
|
||||||
case BluetoothDevice.REQUEST_TYPE_PHONEBOOK_ACCESS:
|
case BluetoothDevice.REQUEST_TYPE_PHONEBOOK_ACCESS:
|
||||||
title = context.getString(R.string.bluetooth_phonebook_request);
|
title = context.getString(R.string.bluetooth_phonebook_request);
|
||||||
message = context.getString(R.string.bluetooth_pb_acceptance_dialog_text,
|
message = context.getString(R.string.bluetooth_pb_acceptance_dialog_text,
|
||||||
deviceName, deviceName);
|
deviceAlias, deviceAlias);
|
||||||
break;
|
break;
|
||||||
case BluetoothDevice.REQUEST_TYPE_MESSAGE_ACCESS:
|
case BluetoothDevice.REQUEST_TYPE_MESSAGE_ACCESS:
|
||||||
title = context.getString(R.string.bluetooth_map_request);
|
title = context.getString(R.string.bluetooth_map_request);
|
||||||
message = context.getString(R.string.bluetooth_map_acceptance_dialog_text,
|
message = context.getString(R.string.bluetooth_map_acceptance_dialog_text,
|
||||||
deviceName, deviceName);
|
deviceAlias, deviceAlias);
|
||||||
break;
|
break;
|
||||||
case BluetoothDevice.REQUEST_TYPE_SIM_ACCESS:
|
case BluetoothDevice.REQUEST_TYPE_SIM_ACCESS:
|
||||||
title = context.getString(R.string.bluetooth_sap_request);
|
title = context.getString(R.string.bluetooth_sap_request);
|
||||||
message = context.getString(R.string.bluetooth_sap_acceptance_dialog_text,
|
message = context.getString(R.string.bluetooth_sap_acceptance_dialog_text,
|
||||||
deviceName, deviceName);
|
deviceAlias, deviceAlias);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
title = context.getString(R.string.bluetooth_connection_permission_request);
|
title = context.getString(R.string.bluetooth_connection_permission_request);
|
||||||
message = context.getString(R.string.bluetooth_connection_dialog_text,
|
message = context.getString(R.string.bluetooth_connection_dialog_text,
|
||||||
deviceName, deviceName);
|
deviceAlias, deviceAlias);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
Notification notification = new Notification.Builder(context)
|
Notification notification = new Notification.Builder(context)
|
||||||
|
@@ -20,6 +20,7 @@ import android.app.QueuedWork;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
||||||
@@ -62,10 +63,10 @@ final class LocalBluetoothPreferences {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static boolean shouldShowDialogInForeground(Context context,
|
static boolean shouldShowDialogInForeground(Context context,
|
||||||
String deviceAddress) {
|
String deviceAddress, String deviceName) {
|
||||||
LocalBluetoothManager manager = Utils.getLocalBtManager(context);
|
LocalBluetoothManager manager = Utils.getLocalBtManager(context);
|
||||||
if (manager == null) {
|
if (manager == null) {
|
||||||
if(DEBUG) Log.v(TAG, "manager == null - do not show dialog.");
|
if (DEBUG) Log.v(TAG, "manager == null - do not show dialog.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,6 +116,18 @@ final class LocalBluetoothPreferences {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!TextUtils.isEmpty(deviceName)) {
|
||||||
|
// If the device is a custom BT keyboard specifically for this device
|
||||||
|
String packagedKeyboardName = context.getString(
|
||||||
|
com.android.internal.R.string.config_packagedKeyboardName);
|
||||||
|
if (deviceName.equals(packagedKeyboardName)) {
|
||||||
|
if (DEBUG) Log.v(TAG, "showing dialog for packaged keyboard");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (DEBUG) Log.v(TAG, "Found no reason to show the dialog - do not show dialog.");
|
if (DEBUG) Log.v(TAG, "Found no reason to show the dialog - do not show dialog.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user