[我在android 10中获取URI时遇到问题,它在较低的设备上运行,但是我不知道在android 10中如何操作。我正在服务器中上传视频。
bitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, false);
String path = MediaStore.Images.Media.insertImage(mContext.getContentResolver(), bitmap, "Title", null);
Uri.parse(path);
我也尝试ContentValues
,但我不明白该怎么办,但遇到一些错误,例如无法解决Q,RELATIVE_PATH,IS_PENDING
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, System.currentTimeMillis()+"");
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpeg");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1);
}
任何人都可以帮助我如何在android 10中获取URI吗?
高度赞赏任何帮助。
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
使用下一个片段将新的位图插入Andorid 10中的MediaStore中,并获取Uri。考虑到此代码仅适用于Android 10。
压缩格式必须与mime-type参数有关。例如,对于JPEG压缩格式,mime类型将为“ image / jpeg”,依此类推。subFolder参数是可选的。
@NonNull
private Uri saveBitmap(@NonNull final Context context, @NonNull final Bitmap bitmap,
@NonNull final Bitmap.CompressFormat format, @NonNull final String mimeType,
@NonNull final String displayName, @Nullable final String subFolder) throws IOException
{
String relativeLocation = Environment.DIRECTORY_PICTURES;
if (!TextUtils.isEmpty(subFolder))
{
relativeLocation += File.separator + subFolder;
}
final ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, displayName);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, mimeType);
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, relativeLocation);
final ContentResolver resolver = context.getContentResolver();
OutputStream stream = null;
Uri uri = null;
try
{
final Uri contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
uri = resolver.insert(contentUri, contentValues);
if (uri == null)
{
throw new IOException("Failed to create new MediaStore record.");
}
stream = resolver.openOutputStream(uri);
if (stream == null)
{
throw new IOException("Failed to get output stream.");
}
if (bitmap.compress(format, 95, stream) == false)
{
throw new IOException("Failed to save bitmap.");
}
return uri;
}
catch (IOException e)
{
if (uri != null)
{
// Don't leave an orphan entry in the MediaStore
resolver.delete(uri, null, null);
}
throw e;
}
finally
{
if (stream != null)
{
stream.close();
}
}
}