2010-11-03 4 views
2

J'utilise un Android Intent avec ACTION_SEND et EXTRA_STREAM pour partager un PNG généré via un ContentProvider. Cela fonctionne parfaitement pour e-mail/GMail, Flickr, MMS, etc. mais ne fonctionne pas si je sélectionne Bluetooth dans la boîte de dialogue du sélecteur d'activité.Utiliser ACTION_SEND avec Bluetooth

L'appareil est un HTC Legend fonctionnant sous Android 2.1. L'appareil est capable de partager des images avec mon ordinateur via Bluetooth normalement, mais pas lorsqu'il est appelé par mon application. Je reçois un message de pain grillé avec le texte suivant:

Partage Bluetooth: fichier fichier inconnu non envoyé

La sortie logcat est pas particulièrement instructif. La seule entrée de niveau d'erreur est la suivante, qui semble se produire immédiatement après l'appel de la méthode query de mon ContentProvider (elle-même appelée par la méthode openFileHelper). Il n'y a pas de trace de pile.

E/BluetoothOppSendFileInfo( 337): scheme: content, authority: mydomain.myapp.myprovider 

J'ai recherché par la Android Bluetooth source code et je ne peux pas trouver où ce message de journal est écrit uninformative.

Peut-être qu'il y a quelque chose qui ne va pas avec mon ContentProvider, mais je ne sais pas ce qui se passe comme cela fonctionne pour les autres cibles d'intention.

Est-ce que quelqu'un est au courant des pièges spécifiques à Bluetooth que je puisse ignorer?

Pour ce que ça vaut la peine, voici ce que mon ContentProvider ressemble:

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

Répondre

1

Après la mise à niveau du combiné HTC Legend à Android 2.2 (Froyo), le problème a disparu, ce qui suggère qu'il y avait quelque chose de défectueux dans le Prise en charge Bluetooth dans la version précédente du logiciel du téléphone.