Merge "Show Bluetooth dialog in a specific case"
This commit is contained in:
@@ -50,10 +50,8 @@ public final class BluetoothPairingRequest extends BroadcastReceiver {
|
|||||||
PowerManager powerManager = context.getSystemService(PowerManager.class);
|
PowerManager powerManager = context.getSystemService(PowerManager.class);
|
||||||
int pairingVariant = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
|
int pairingVariant = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT,
|
||||||
BluetoothDevice.ERROR);
|
BluetoothDevice.ERROR);
|
||||||
String deviceAddress = device != null ? device.getAddress() : null;
|
|
||||||
String deviceName = device != null ? device.getName() : null;
|
|
||||||
boolean shouldShowDialog = LocalBluetoothPreferences.shouldShowDialogInForeground(
|
boolean shouldShowDialog = LocalBluetoothPreferences.shouldShowDialogInForeground(
|
||||||
context, deviceAddress, deviceName);
|
context, device);
|
||||||
|
|
||||||
// Skips consent pairing dialog if the device was recently associated with CDM
|
// Skips consent pairing dialog if the device was recently associated with CDM
|
||||||
if (pairingVariant == BluetoothDevice.PAIRING_VARIANT_CONSENT
|
if (pairingVariant == BluetoothDevice.PAIRING_VARIANT_CONSENT
|
||||||
|
@@ -108,8 +108,6 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver {
|
|||||||
mRequestType);
|
mRequestType);
|
||||||
connectionAccessIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice);
|
connectionAccessIntent.putExtra(BluetoothDevice.EXTRA_DEVICE, mDevice);
|
||||||
|
|
||||||
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 =
|
||||||
@@ -117,7 +115,7 @@ public final class BluetoothPermissionRequest extends BroadcastReceiver {
|
|||||||
|
|
||||||
if (powerManager.isScreenOn()
|
if (powerManager.isScreenOn()
|
||||||
&& LocalBluetoothPreferences.shouldShowDialogInForeground(
|
&& LocalBluetoothPreferences.shouldShowDialogInForeground(
|
||||||
context, deviceAddress, deviceName)) {
|
context, mDevice)) {
|
||||||
context.startActivity(connectionAccessIntent);
|
context.startActivity(connectionAccessIntent);
|
||||||
} else {
|
} else {
|
||||||
// Put up a notification that leads to the dialog
|
// Put up a notification that leads to the dialog
|
||||||
|
@@ -16,7 +16,10 @@
|
|||||||
|
|
||||||
package com.android.settings.bluetooth;
|
package com.android.settings.bluetooth;
|
||||||
|
|
||||||
|
import android.annotation.Nullable;
|
||||||
|
import android.app.ActivityManager;
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
|
import android.bluetooth.BluetoothDevice;
|
||||||
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;
|
||||||
@@ -57,8 +60,9 @@ final class LocalBluetoothPreferences {
|
|||||||
KEY_DISCOVERABLE_END_TIMESTAMP, 0);
|
KEY_DISCOVERABLE_END_TIMESTAMP, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean shouldShowDialogInForeground(Context context,
|
static boolean shouldShowDialogInForeground(Context context, @Nullable BluetoothDevice device) {
|
||||||
String deviceAddress, String deviceName) {
|
String deviceAddress = device != null ? device.getAddress() : null;
|
||||||
|
String deviceName = device != null ? device.getName() : null;
|
||||||
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.");
|
||||||
@@ -126,6 +130,20 @@ final class LocalBluetoothPreferences {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (device != null) {
|
||||||
|
ActivityManager activityManager = context.getSystemService(ActivityManager.class);
|
||||||
|
String packageName = device.getCreateBondCaller();
|
||||||
|
|
||||||
|
if (packageName != null && activityManager.getPackageImportance(packageName)
|
||||||
|
== ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.v(TAG, "showing dialog because the initiating application "
|
||||||
|
+ "is in foreground");
|
||||||
|
}
|
||||||
|
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