老实说,如果不修改sdk,我就无法想出办法。 如果你是OEM,很容易(我在4.3):
在packages / apps / Settings / AndroidManifest.xml中,注释配对对话框的intentfilter:
在frameworks / base / core / java / android / bluetooth / BluetoothDevice.java中从这个常量中删除@hide javadoc注释
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
而这种方法
public boolean setPairingConfirmation(boolean confirm)
然后为BluetoothDevice.PAIRING_REQUEST操作注册您自己的活动或广播接收器。 此广播接收器允许在没有用户输入的情况下继续配对(仅当不需要引脚时):
@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 ); } }
您需要重新构建sdk并针对新版本编译代码以访问常量和方法,并替换/ system分区上的Settings.apk以禁用该对话框。 您可能还需要作为系统应用程序运行,但我认为可能不是。