In my program, I want to save a selected ringtone by it\'s file path, and then set it as the current ringtone later.
I have got the ringtone uri from RingtonePrefere
Following code will return absolute path for content Uri of audio, video and image.
public static String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null);
int idx;
if(contentUri.getPath().startsWith("/external/image") || contentUri.getPath().startsWith("/internal/image")) {
idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
}
else if(contentUri.getPath().startsWith("/external/video") || contentUri.getPath().startsWith("/internal/video")) {
idx = cursor.getColumnIndex(MediaStore.Video.VideoColumns.DATA);
}
else if(contentUri.getPath().startsWith("/external/audio") || contentUri.getPath().startsWith("/internal/audio")) {
idx = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA);
}
else{
return contentUri.getPath();
}
if(cursor != null && cursor.moveToFirst()) {
return cursor.getString(idx);
}
return null;
}