1.uri转绝对路径
fun getFilePathFromContentUri (
selectedVideoUri: Uri,
contentResolver: ContentResolver
) : String {
val filePath: String
val filePathColumn = arrayOf< String> ( MediaStore. MediaColumns. DATA)
val cursor: Cursor =
contentResolver. query ( selectedVideoUri, filePathColumn, null , null , null )
cursor. moveToFirst ( )
val columnIndex: Int = cursor. getColumnIndex ( filePathColumn[ 0 ] )
filePath = cursor. getString ( columnIndex)
cursor. close ( )
return filePath
}
2.绝对路径转uri
fun getImageContentUri ( context: Context, imageFile: File) : Uri? {
val filePath = imageFile. absolutePath
val cursor = context. contentResolver. query (
MediaStore. Images. Media. EXTERNAL_CONTENT_URI, arrayOf (
MediaStore. Images. Media. _ID
) , MediaStore. Images. Media. DATA + "=? " , arrayOf ( filePath) , null
)
return if ( cursor != null && cursor. moveToFirst ( ) ) {
val id = cursor. getInt ( cursor. getColumnIndex ( MediaStore. MediaColumns. _ID) )
val baseUri = Uri. parse ( "content://media/external/images/media" )
Uri. withAppendedPath ( baseUri, "" + id)
} else {
if ( imageFile. exists ( ) ) {
val values = ContentValues ( )
values. put ( MediaStore. Images. Media. DATA, filePath)
context. contentResolver. insert ( MediaStore. Images. Media. EXTERNAL_CONTENT_URI, values)
} else {
null
}
}
}