Gerçekten sdk'yi değiştirmeden bunu yapmanın bir yolunu bulamadım. Eğer OEM iseniz, o (Ben 4,3 olduğum) kolay:
yılında paketler/apps/Ayarlar/AndroidManifest.xml, eşleştirme iletişim için amaç filtresini açıklama: çerçeveler içinde
<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>
Bu sabit
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_PAIRING_REQUEST =
"android.bluetooth.device.action.PAIRING_REQUEST";
ve bu yöntem ile ilgili @hide javadoc ek açıklama kaldırmak /base/core/java/android/bluetooth/BluetoothDevice.java
public boolean setPairingConfirmation(boolean confirm)
Ardından BluetoothDevice.PAIRING_REQUEST eylemi için kendi etkinliğinizi veya yayın alıcınızı kaydedin. Bu yayın alıcısı (hayır pim gereklidir yalnızca) eşleştirme kullanıcı girişi olmadan devam etmesini sağlar:
@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);
}
}
Sen sdk yeniden inşa etmek ve sürekli ve yöntemlere erişmek için yeni sürüme karşı kodunuzu derlemek gerekir ve iletişim kutusunu devre dışı bırakmak için/system bölümüne Settings.apk dosyasını değiştirin. Ayrıca bir sistem uygulaması olarak da çalıştırmanız gerekebilir, ancak büyük olasılıkla değil.
Aynı sorunu yaşıyorum. Ben device.cancelPairingUserInput(); device.setPairingConfirmation (doğru); ancak BluetoothDevice.ACTION_BOND_STATE_CHANGED eylemini BluetoothDevice.BOND_BONDING durumuyla aldıktan sonra, iletişim kutusu kısa bir süre için açılır ve ardından işten çıkarılır. –