La impresión de Bluetooth con Android dejó de funcionar en 4.1

Tenemos una aplicación que imprime imágenes en una impresora bluetooth. Esta aplicación ha funcionado bien en Android 4.0 ICS, pero cuando actualizamos uno de ellos a Android 4.1 Jelly Bean, la impresión dejó de funcionar con esto en Logcat:

W / System.err (19319): java.lang.SecurityException: Permiso de denegación: escribiendo com.android.bluetooth.opp.BluetoothOppProvider contenido de uri: //com.android.bluetooth.opp/btopp desde pid = 19319, uid = 10106 requiere android.permission.ACCESS_BLUETOOTH_SHARE, o grantUriPermission ()

El problema es que estamos declarando ese permiso, por lo que este error no tiene sentido para nosotros. Aquí está la línea de nuestro manifiesto.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.turner.itstrategy.LumenboxClient"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="11" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_BLUETOOTH_SHARE"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.VIBRATE" />

     (stuff removed)
</manifest>

Aquí está el código que estamos usando para imprimir. Este código se ha tomado de ejemplos en stackoverflow y en otros lugares.

ContentValues values = new ContentValues();

String path = Environment.getExternalStorageDirectory().toString();
File imageFile = new File(path, "CurrentLumenboxPrint.jpg");

//build the message to send on BT
values.put(BluetoothShare.URI, Uri.fromFile(imageFile).toString());
values.put(BluetoothShare.MIMETYPE, "image/jpeg");
values.put(BluetoothShare.DESTINATION, device.getAddress());
values.put(BluetoothShare.DIRECTION, BluetoothShare.DIRECTION_OUTBOUND);
Long ts = System.currentTimeMillis();
values.put(BluetoothShare.TIMESTAMP, ts);

// Here is where the exception happens      
final Uri contentUri = getApplicationContext().getContentResolver().insert(BluetoothShare.CONTENT_URI, values);

En este momento estamos muertos en el agua ... cualquier consejo apreciado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta