Tôi thành thật không thể tìm ra cách để làm điều này mà không sửa đổi sdk. Nếu bạn là OEM, thật dễ dàng (Tôi đang trên 4.3):
Trong gói/apps/Cài đặt/AndroidManifest.xml, bình luận bộ lọc ý định cho hộp thoại cặp đôi:
<activity android:name=".bluetooth.BluetoothPairingDialog"
android:label="@string/bluetooth_pairing_request"
android:excludeFromRecents="true"
android:theme="@*android:style/Theme.Holo.Dialog.Alert">
<!-- <intent-filter>
<action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter> -->
</activity>
Trong khuôn khổ /base/core/java/android/bluetooth/BluetoothDevice.java loại bỏ các chú thích @hide javadoc từ này liên tục
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_PAIRING_REQUEST =
"android.bluetooth.device.action.PAIRING_REQUEST";
và phương pháp này
public boolean setPairingConfirmation(boolean confirm)
Sau đó đăng ký hoạt động của riêng bạn hoặc bộ thu phát sóng cho hành động BluetoothDevice.PAIRING_REQUEST. máy thu phát sóng này cho phép cặp đôi tiếp tục mà không sử dụng đầu vào (chỉ nếu không có pin được bắt buộc):
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
device.setPairingConfirmation(true);
}
}
Bạn sẽ cần phải xây dựng lại các sdk và biên dịch mã của bạn chống lại các phiên bản mới để có được quyền truy cập vào các hằng số và phương pháp và thay thế Settings.apk trên phân vùng/hệ thống để tắt hộp thoại. Bạn có thể cũng có thể cần phải chạy như một ứng dụng hệ thống nhưng tôi nghĩ rằng có khả năng không.
Nguồn
2014-05-16 16:24:22
Tôi gặp vấn đề tương tự. Tôi có thể bỏ qua hộp thoại mà không cần người dùng nhập vào bằng cách gọi device.cancelPairingUserInput(); device.setPairingConfirmation (true); nhưng chỉ sau khi nhận được hành động BluetoothDevice.ACTION_BOND_STATE_CHANGED với trạng thái BluetoothDevice.BOND_BONDING để hộp thoại xuất hiện một thời gian ngắn và sau đó được loại bỏ. –