Android Prevent Bluetooth Dialing Dialog

Estoy desarrollando una aplicación interna que utiliza Bluetooth para imprimir. Quiero que el emparejamiento de Bluetooth ocurra sin la entrada del usuario. He conseguido que funcione atrapando la transmisión android.bluetooth.device.action.PAIRING_REQUEST .

En mi receptor de difusión llamo el método setPin, y el emparejamiento funciona bien, pero un BluetoothPairingDialog se muestra por un segundo o dos, luego desaparece – ver enlace a continuación.

Https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/bluetooth/BluetoothPairingDialog.java

Dado que la emisión no está ordenada, no puedo llamar a abortBroadcast() , y me preguntaba si había alguna otra forma de evitar que apareciera el diálogo de emparejamiento. ¿Puedo conectarme al administrador de ventanas de alguna manera?

One Solution collect form web for “Android Prevent Bluetooth Dialing Dialog”

Honestamente no he sido capaz de llegar a una manera de hacer esto sin modificar el sdk. Si usted es el OEM, es fácil (estoy en 4.3):

En packages / apps / Settings / AndroidManifest.xml, comente el filtro de intenciones para el diálogo de emparejamiento:

 <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> 

En frameworks / base / core / java / android / bluetooth / BluetoothDevice.java elimine la anotación javadoc de @hide de esta constante

 @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST"; 

Y este método

 public boolean setPairingConfirmation(boolean confirm) 

A continuación, registre su propia actividad o receptor de difusión para la acción BluetoothDevice.PAIRING_REQUEST. Este receptor de difusión permite que el emparejamiento continúe sin la entrada del usuario (sólo si no se requiere pin):

 @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 ); } } 

Tendrá que reconstruir el sdk y compilar su código en la nueva versión para obtener acceso a la constante y los métodos, y reemplazar Settings.apk en la partición / system para deshabilitar el diálogo. Es posible que también tenga que funcionar como una aplicación del sistema, pero creo que no.

  • La interfaz se está desvaneciendo pero el cuadro de diálogo de alerta no se muestra
  • ¿Cómo puedo crear un diálogo personalizado con dos datepicker?
  • Problema de diálogo: requestFeature () debe ser llamado antes de agregar contenido
  • Diálogo sin bordes de Android
  • ¿Cómo actualizar los valores de setMultiChoiceItems en onPrepareDialog?
  • Android no puede obtener el tamaño de archivo de diálogo
  • Colocación de un diálogo en la pantalla
  • Cambiar el color del diálogo Datepicker para Android 5.0
  • ¿El diálogo detiene la actividad de llamada?
  • Android - Cómo descartar todos los cuadros de diálogo en onPause
  • Diálogo emergente en la pantalla principal de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.