| Index: chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java b/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| index 9bee553b1e10ce710b8af1fe7d70d2301f97be1a..2431ce56e16004a89fd647977e0689f3f53d7f97 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/BluetoothChooserDialog.java
|
| @@ -6,6 +6,7 @@ package org.chromium.chrome.browser;
|
|
|
| import android.Manifest;
|
| import android.app.Activity;
|
| +import android.bluetooth.BluetoothAdapter;
|
| import android.content.BroadcastReceiver;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| @@ -20,6 +21,7 @@ import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.omnibox.OmniboxUrlEmphasizer;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| +import org.chromium.chrome.browser.util.IntentUtils;
|
| import org.chromium.components.location.LocationUtils;
|
| import org.chromium.ui.base.WindowAndroid;
|
| import org.chromium.ui.text.NoUnderlineClickableSpan;
|
| @@ -69,6 +71,9 @@ public class BluetoothChooserDialog
|
| // Used to keep track of when the Mode Changed Receiver is registered.
|
| boolean mIsLocationModeChangedReceiverRegistered;
|
|
|
| + // The status message to show when the bluetooth adapter is turned off.
|
| + private final SpannableString mAdapterOffStatus;
|
| +
|
| @VisibleForTesting
|
| final BroadcastReceiver mLocationModeBroadcastReceiver = new BroadcastReceiver() {
|
| @Override
|
| @@ -106,6 +111,10 @@ public class BluetoothChooserDialog
|
| mOrigin = origin;
|
| mSecurityLevel = securityLevel;
|
| mNativeBluetoothChooserDialogPtr = nativeBluetoothChooserDialogPtr;
|
| + mAdapterOffStatus =
|
| + SpanApplier.applySpans(mActivity.getString(R.string.bluetooth_adapter_off_help),
|
| + new SpanInfo("<link>", "</link>",
|
| + new BluetoothClickableSpan(LinkType.ADAPTER_OFF_HELP, mActivity)));
|
| }
|
|
|
| /**
|
| @@ -275,9 +284,19 @@ public class BluetoothChooserDialog
|
| break;
|
| }
|
| case ADAPTER_OFF: {
|
| - Intent intent = new Intent();
|
| - intent.setAction(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
|
| - mContext.startActivity(intent);
|
| + Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
|
| + if (!mWindowAndroid.canResolveActivity(intent)) {
|
| + intent = new Intent(android.provider.Settings.ACTION_BLUETOOTH_SETTINGS);
|
| + if (!mWindowAndroid.canResolveActivity(intent)) {
|
| + String bluetoothSettingsUnavailable =
|
| + mActivity.getString(R.string.bluetooth_settings_unavailable);
|
| + mItemChooserDialog.setErrorState(
|
| + bluetoothSettingsUnavailable, mAdapterOffStatus);
|
| + break;
|
| + }
|
| + }
|
| + mItemChooserDialog.setCloseWindowWhenLoseFocus(false);
|
| + IntentUtils.safeStartActivity(mContext, intent);
|
| break;
|
| }
|
| case ADAPTER_OFF_HELP: {
|
| @@ -357,12 +376,8 @@ public class BluetoothChooserDialog
|
| mActivity.getString(R.string.bluetooth_adapter_off),
|
| new SpanInfo("<link>", "</link>",
|
| new BluetoothClickableSpan(LinkType.ADAPTER_OFF, mActivity)));
|
| - SpannableString adapterOffStatus = SpanApplier.applySpans(
|
| - mActivity.getString(R.string.bluetooth_adapter_off_help),
|
| - new SpanInfo("<link>", "</link>",
|
| - new BluetoothClickableSpan(LinkType.ADAPTER_OFF_HELP, mActivity)));
|
|
|
| - mItemChooserDialog.setErrorState(adapterOffMessage, adapterOffStatus);
|
| + mItemChooserDialog.setErrorState(adapterOffMessage, mAdapterOffStatus);
|
| }
|
|
|
| @CalledByNative
|
|
|