Le côté client d'un fournisseur de contenu consommateur, je peux faire quelque chose comme ça, pour obtenir un InputStream approprié pour lire l'image:Renvoyer une mémoire mappée InputStream à partir d'un fournisseur de contenu?
InputStream is = getContentResolver().openInputStream(pictureUri);
Il est une API agréable, et sera sur le côté serveur, le réel résultat fournisseur de contenu dans un appel à:
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
// Open a proper ParcelFileDescriptor, most likely using openFileHelper(uri, mode)
}
mais si l'image cartographiée à l'URI est de ne pas être trouvé sur le système de fichiers, mais comme une ressource mémoire ou générée à la volée. Puis-je créer une mémoire mappée File
ou InputStream
, ou autre chose, de sorte que je n'ai pas besoin d'enregistrer un fichier temporaire sur le disque, juste pour pouvoir le renvoyer à mon consommateur de fournisseur de contenu?
qui est une solution qui pourrait fonctionner, mais pas comme je veux le faire. Je veux vraiment pouvoir utiliser la méthode 'ContentResolver # openInputStream()' pour lire toutes sortes de données distantes. Indépendamment de la façon dont le serveur crée/obtient les données. Il s'agit de ne pas exposer l'implémentation du serveur au client. – PeyloW
@PeyloW avez-vous trouvé une solution? Je suis à la recherche d'une solution aussi. – Sunny
@Sunny Aucun qui n'est pas un hack. J'ai donc fini par enregistrer des fichiers temporaires et envoyer des descripteurs de fichiers. – PeyloW