我想使用调整大小的库来压缩一些照片。该库要求我将源文件传递给它。我选择具有简单意图的图像,得到的是这样的内容Uri:
content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F96/ORIGINAL/NONE/2013194373
但是,当我将其放入File()
内时,它崩溃并显示以下错误
Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
如何将内容uri转换为文件功能的有效路径? 我曾尝试过以其他方式使用Uri.parse,但无法弄清楚。
我还试图弄乱内容解析器,但不知道如何使它失效。
如果可能的话,我很感谢Kotlin的帮助,但也可能会用Java理解它。
答案 0 :(得分:0)
我是在一段时间之前发现的(我不记得在哪里了)
ClassC classC = new ClassC();
ClassA<ClassB> classA = new ClassA<ClassB>();
classC.Add(classA);
这样称呼
private fun getRealPathFromUri(context: Context, contentUri: Uri): String {
var cursor: Cursor? = null
try {
val proj = arrayOf(MediaStore.Images.Media.DATA)
cursor = context.contentResolver.query(contentUri, proj, null, null, null)
val columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
cursor.moveToFirst()
return cursor.getString(columnIndex)
} finally {
if (cursor != null) {
cursor.close()
}
}
}