на Android 10, при чтении файла с помощью openFIleDescriptor, есть шанс вызвать зависание системы. В том числе читайте картинки / видео в системе по содержанию URI.
Следующие журналы:
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 flags=1 obj=0x766253c8 self=0x7090469c00
| sysTid=13087 nice=0 cgrp=default sched=0/0 handle=0x7116618ed0
| state=S schedstat=( 108515669119 27391137846 289434 ) utm=7602 stm=3249 core=7 HZ=100
| stack=0x7ff9e76000-0x7ff9e78000 stackSize=8192KB
| held mutexes=
#00 pc 00000000000c14a4 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#01 pc 000000000007bb2c /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
#02 pc 0000000000058dfc /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+244)
#03 pc 0000000000059ce8 /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60)
#04 pc 0000000000059a8c /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+180)
#05 pc 000000000004df90 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+120)
#06 pc 00000000001500fc /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+332)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (BinderProxy.java:510)
at android.content.ContentProviderProxy.openTypedAssetFile (ContentProviderNative.java:703)
at android.content.ContentResolver.openTypedAssetFileDescriptor (ContentResolver.java:1702)
at android.content.ContentResolver.openAssetFileDescriptor (ContentResolver.java:1518)
at android.content.ContentResolver.openFileDescriptor (ContentResolver.java:1353)
at android.content.ContentResolver.openFileDescriptor (ContentResolver.java:1301)
Мой код ниже для чтения растрового изображения: url = content: // media / external / images / media / 940506
Bitmap bitmap = null;
try(ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r")) {
if (pfd != null) {
FileDescriptor fd = pfd.getFileDescriptor();
bitmap = BitmapFactory.decodeFileDescriptor(fd, null, options);
}
} catch (Exception e) {
e.printStackTrace();
}