Я использую Android Intent
с ACTION_SEND
и EXTRA_STREAM
, чтобы поделиться сгенерированным PNG через ContentProvider
. Это отлично работает для электронной почты / GMail, Flickr, MMS и т. Д., Но не работает, если я выбираю Bluetooth в диалоге выбора активности.
Устройство HTC Legend под управлением Android 2.1. Устройство может обмениваться изображениями с моим компьютером через Bluetooth в обычном режиме, но не при вызове моим приложением. Я получаю тостовое сообщение со следующим текстом:
Передача по Bluetooth: неизвестный файл не отправлен
Вывод logcat не особенно информативен. Единственная запись об уровне ошибки - это следующее, что, по-видимому, происходит сразу после вызова метода query
моего ContentProvider
(который сам вызывается методом openFileHelper
). Нет трассировки стека.
E/BluetoothOppSendFileInfo( 337): scheme: content, authority: mydomain.myapp.myprovider
Я искал в исходном коде Bluetooth для Android и не могу найти, где написано это неинформативное сообщение журнала.
Возможно, что-то не так с моим ContentProvider
, но я не знаю, как это работает для других целей Intent.
Кто-нибудь знает о каких-либо специфических для Bluetooth ошибках, о которых я могу не знать?
Для чего это стоит, вот как выглядит мой ContentProvider
:
@Override
public Cursor query(Uri uri,
String[] projection,
String selection,
String[] selectionArgs,
String sortOrder)
{
if (uri.equals(CONTENT_URI))
{
String[] columns = projection == null
? new String[]{"uri", "mime_type", "_data"}
: projection;
MatrixCursor cursor = new MatrixCursor(columns);
cursor.addRow(getColumns(columns));
return cursor;
}
throw new IllegalArgumentException("Unsupported URI");
}
@Override
public ParcelFileDescriptor openFile(Uri uri,
String mode) throws FileNotFoundException
{
return openFileHelper(uri, mode);
}