J'ai un vrai chemin d'accès à un fichier comme "file: ///mnt/sdcard/3dphoto/temp19.jps" , comment puis-je obtenir l'uri comme "content: // media/external/images/media/1 "?Obtenir Uri à partir du chemin réel
Répondre
Transformez votre "fichier: // ..." dans un chemin de fichier, recherchez l'ID de l'élément avec le code suivant, puis ajoutez-le à l'URI du fournisseur. De plus, en fonction des extensions de fichiers, utilisez le bon fournisseur (par exemple MediaStore.Video.Media.EXTERNAL_CONTENT_URI ou MediaStore.Image.Media.EXTERNAL_CONTENT_URI)
/**
* Given a media filename, returns it's id in the media content provider
*
* @param providerUri
* @param appContext
* @param fileName
* @return
*/
public long getMediaItemIdFromProvider(Uri providerUri, Context appContext, String fileName) {
//find id of the media provider item based on filename
String[] projection = { MediaColumns._ID, MediaColumns.DATA };
Cursor cursor = appContext.getContentResolver().query(
providerUri, projection,
MediaColumns.DATA + "=?", new String[] { fileName },
null);
if (null == cursor) {
Log.d(TAG_LOG, "Null cursor for file " + fileName);
return ITEMID_NOT_FOUND;
}
long id = ITEMID_NOT_FOUND;
if (cursor.getCount() > 0) {
cursor.moveToFirst();
id = cursor.getLong(cursor.getColumnIndexOrThrow(BaseColumns._ID));
}
cursor.close();
return id;
}
Parfois, Mediaprovider ne met pas à jour immédiatement après un fichier multimédia est ajouté au stockage de l'appareil. Vous pouvez forcer à rafraîchir ses enregistrements à l'aide de cette méthode:
/**
* Force a refresh of media content provider for specific item
*
* @param fileName
*/
private void refreshMediaProvider(Context appContext, String fileName) {
MediaScannerConnection scanner = null;
try {
scanner = new MediaScannerConnection(appContext, null);
scanner.connect();
try {
Thread.sleep(200);
} catch (Exception e) {
}
if (scanner.isConnected()) {
Log.d(TAG_LOG, "Requesting scan for file " + fileName);
scanner.scanFile(fileName, null);
}
} catch (Exception e) {
Log.e(TAG_LOG, "Cannot to scan file", e);
} finally {
if (scanner != null) {
scanner.disconnect();
}
}
}
Alors, que dois-je passer au contexte? – newstartgirls
le contexte de l'application, l'activité d'appel, tout type de Contexte que vous pouvez obtenir à partir du code appelant ... – Rainbowbreeze
Quelqu'un sait comment l'inverse est possible? En fait, je veux créer un fichier sur "content: //" –
j'avais même question pour mon activité de l'explorateur de fichiers ... mais u devrait knw tht le contenturi pour le fichier prend en charge que les données de Mediastore comme image, audio et vidéo .... Je vous donne pour obtenir uri de contenu d'image de sélectionner une image à partir sdcard .... essayez ce code ... peut-être cela fonctionnera pour vous ...
public static Uri getImageContentUri(Context context, File imageFile) {
String filePath = imageFile.getAbsolutePath();
Cursor cursor = context.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.Media._ID },
MediaStore.Images.Media.DATA + "=? ",
new String[] { filePath }, null);
if (cursor != null && cursor.moveToFirst()) {
int id = cursor.getInt(cursor
.getColumnIndex(MediaStore.MediaColumns._ID));
Uri baseUri = Uri.parse("content://media/external/images/media");
return Uri.withAppendedPath(baseUri, "" + id);
} else {
if (imageFile.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, filePath);
return context.getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
} else {
return null;
}
}
}
Et si ce n'est pas une image ou une vidéo? Que devrions-nous faire alors? – soshial
une autre façon facile:
File file = new File(Path);
Uri uri = Uri.fromFile(file);
Celui-ci ne peut pas résoudre dans le cas: caractère spécial du dossier. Pas bon. –
- 1. Obtenir le chemin réel du fichier téléchargé
- 2. Obtenir le chemin d'accès réel du dossier
- 3. Affichage de l'image à partir du chemin uri
- 4. chemin relatif à uri
- 5. Obtenir le chemin dll réel dans .Net
- 6. Comment puis-je obtenir le chemin réel du système de fichiers à partir de webapp RingoJS?
- 7. Obtenir le chemin d'accès local à partir du chemin réseau
- 8. Android - Comment obtenir Uri à partir du fichier brut?
- 9. Récupère le contenu MediaStore Uri à partir du chemin du fichier?
- 10. Forme absolue uri à partir d'un chemin relatif dans Rails
- 11. Obtenir du contenu par URI
- 12. comment obtenir le chemin du fichier dans le périphérique réel
- 13. Obtenir un IVsTextLines à partir du chemin du fichier
- 14. Comment obtenir le chemin réel quel chemin alias
- 15. Comment obtenir un chemin de vignette à partir du chemin de l'image dans Android?
- 16. Obtenir une URI de contenu à partir d'une URI de fichier?
- 17. Obtenir le fichier audio Uri à partir du sélecteur de fichier
- 18. Puis-je obtenir Uri du fichier image à partir de son nom?
- 19. Chemin relatif utilisant Uri
- 20. Comment obtenir une pièce jointe à partir du chemin spécifié
- 21. Obtenir la géométrie du chemin à partir de l'objet FlowDocument
- 22. obtenir des informations à partir du chemin de périphérique
- 23. Obtenir chemin complet du fichier à partir d'un tableau
- 24. Comment obtenir une image bitmap à partir du chemin du gestionnaire de fichiers OI?
- 25. chemin UNC vers un fichier URI
- 26. Base Uri à partir du processus d'arrière-plan
- 27. Obtenir un titre réel à partir des listes SharePoint
- 28. Comment obtenir le chemin de fichier absolu pour uri media
- 29. Zend obtenir l'identifiant du modèle de uri
- 30. nom Obtenir de uri
Semble en rapport avec http://stackoverflow.com/questions/5657411/android-getting-a-file-uri-from-a-content-uri Pourriez-vous fournir le contexte? – Renaud