Я пытаюсь передать провайдеру контента uri с помощью setBeamPushUrisCallback из галактики nexus (работает 4.2.1) в nexus7 (работает 4.2). Оба устройства установлено приложение, но передача не удается во время передачи NFC для Bluetooth, исключение я получаю:Android Beam ContentProvider Uri не работает
02-10 13:33:32.762: D/BluetoothOppUtility(23916): closeSendFileInfo: uri=content://com.android.beam.Beam/msgs/2
02-10 13:33:32.762: W/dalvikvm(23916): threadid=21: thread exiting with uncaught exception (group=0x40d70930)
02-10 13:33:32.770: E/AndroidRuntime(23916): FATAL EXCEPTION: Bluetooth Share Service
02-10 13:33:32.770: E/AndroidRuntime(23916): java.lang.NullPointerException
02-10 13:33:32.770: E/AndroidRuntime(23916): at com.android.bluetooth.opp.BluetoothOppUtility.closeSendFileInfo(BluetoothOppUtility.java:327)
02-10 13:33:32.770: E/AndroidRuntime(23916): at com.android.bluetooth.opp.BluetoothOppService.insertShare(BluetoothOppService.java:614)
02-10 13:33:32.770: E/AndroidRuntime(23916): at com.android.bluetooth.opp.BluetoothOppService.access$1800(BluetoothOppService.java:69)
02-10 13:33:32.770: E/AndroidRuntime(23916): at com.android.bluetooth.opp.BluetoothOppService$UpdateThread.run(BluetoothOppService.java:472)
02-10 13:33:32.941: E/NfcHandover(693): Handover transfer failed
Я объявил поставщик в своем манифесте (я мог бы запросить Ури просто отлично в моем приложение) и добавил фильтр намерений для активности, которая будет запущена, когда луч будет успешным. Что я делаю не так? и почему передача выполняется для Bluetooth всегда, а не Wi-Fi?
Update:
Вот соответствующий фрагмент кода из приложения:
Активность реализует CreateBeamUrisCallback и в OnCreate:
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (mNfcAdapter == null) return; // NFC not available on this device
mNfcAdapter.setBeamPushUrisCallback(this, this);
и переопределяется метод:
@Override
public Uri[] createBeamUris(NfcEvent event) {
Uri uri = Uri.parse("content://com.android.beam.Beam/msgs/2");
return new Uri[]{uri};
}
Манифест:
<provider
android:name="com.example.android.beam.BeamContentProvider"
android:authorities="com.android.beam.Beam"
android:exported="true"/>
<activity android:name="com.example.android.beam.Beam"
android:label="@string/app_name"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/vnd.com.example.msgs" />
</intent-filter>
</activity>
Не могли бы вы показать некоторые из соответствующих кодов формы вашего приложения? (Android Beam всегда использует Bluetooth, на данный момент он не поддерживает WiFi. Это в отличие от Samsung S-Beam, который всегда использует WiFi Direct, но работает только на последних устройствах с поддержкой NFC от Samsung.) –
Спасибо за разъяснение !! Я обновил свой вопрос с помощью кода. –