![](/img/trans.png)
[英]Android Bluetooth Pairing: How to make sure to get bluetooth pairing request in the front dialog instead of a notification?
[英]Bring Bluetooth pairing request notification dialog on front to ask for PIN
我要做的是在對話框中輸入PIN以進行配對過程。
連接到設備后,我收到通知,但配對對話框沒有顯示。 我必須手動打開它。
到目前為止,我嘗試了以下方法,當我得到PAIRING_REQUEST動作時,在廣播接收器中調用這些方法:
public void pairDevice(BluetoothDevice device)
{
String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
Intent intent = new Intent(ACTION_PAIRING_REQUEST);
String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
intent.putExtra(EXTRA_DEVICE, device);
String EXTRA_PAIRING_VARIANT = "android.bluetooth.device.extra.PAIRING_VARIANT";
int PAIRING_VARIANT_PIN = 0;
intent.putExtra(EXTRA_PAIRING_VARIANT, PAIRING_VARIANT_PIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
這顯示對話框正確,但在我輸入后,它不會配對我的設備。
我也試過這段代碼:
public void pairDevice(BluetoothDevice device)
{
Intent intent = new Intent("android.bluetooth.device.action.PAIRING_REQUEST");
String EXTRA_DEVICE = "android.bluetooth.device.extra.DEVICE";
intent.putExtra(EXTRA_DEVICE, device);
int PAIRING_VARIANT_PIN = 272;
intent.putExtra("android.bluetooth.device.extra.PAIRING_VARIANT", PAIRING_VARIANT_PIN);
sendBroadcast(intent);
}
哪個崩潰我的應用程序,因為它說我沒有權限為PAIRING_REQUEST發送廣播(即使我設置了BLUETOOTH和BLUETOOTH_ADMIN兩個權限)
請,我真的需要顯示這個對話框,如果它是默認對話框會更好。 我正在連接到BLE設備,連接后需要PIN才能配對,並且能夠修改某些特性。
非常感謝您的幫助!
提前致謝!
嘗試使用新的Android BluetoothDevice API:bluetoothdevice.createBond()。 調用此方法后,系統將自動為您調用配對請求對話框。 然后,您可以在該彈出對話框中輸入PIN。
考慮在代碼中添加類似的內容,以便開始配對過程:
private void pairDevice(BluetoothDevice device) {
try {
Log.d(TAG, "Start Pairing... with: " + device.getName());
device.createBond();
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
我遇到了類似的問題,請確保您的藍牙用戶權限設置在清單 xml標記內,而不是在應用程序標記下 - 在AndroidManifest中(即)。 希望這可以幫助。
您可以直接使用connect方法配對設備。如果兩個設備之前沒有配對,那么Android框架將在連接過程中自動向用戶顯示配對請求通知或對話框。 因此,在嘗試連接設備時,您的應用程序無需擔心設備是否已配對。
嘗試將此用於所有API級別:
public static void pairDevice(BluetoothDevice device) {
try {
Method method = device.getClass().getMethod("createBond", (Class[]) null);
method.invoke(device, (Object[]) null);
//From API 19.
// device.createBond();
} catch (Exception e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.