Использование ACTION_SEND с Bluetooth - PullRequest
2 голосов
/ 03 ноября 2010

Я использую 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);
}

1 Ответ

1 голос
/ 15 ноября 2010

После обновления телефона HTC Legend до Android 2.2 (Froyo) проблема исчезла, что свидетельствует о наличии неисправности в поддержке Bluetooth в предыдущей версии программного обеспечения телефона.

...