Я получаю эту ошибку только при запуске устройства, на эмуляторе у меня нет проблем, и пока я вижу эту проблему на вкладке S2 (7.0) и вкладке S3 (8.0), но не навкладка активна 2 (7.1), что делает ее еще более странной.
Это трассировка стека:
09-24 15:53:03.651 com.insypro.inspector3.debug W/System.err: java.lang.IllegalStateException: Unknown URL: content://media/external
09-24 15:53:03.657 com.insypro.inspector3.debug W/System.err: at android.os.Parcel.readException(Parcel.java:1701)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:421)
at android.content.ContentResolver.query(ContentResolver.java:536)
at android.content.ContentResolver.query(ContentResolver.java:478)
at com.insypro.inspector3.utils.PictureObserver$observe$1.apply(PictureObserver.kt:22)
at com.insypro.inspector3.utils.PictureObserver$observe$1.apply(PictureObserver.kt:13)
at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.poll(FlowableMap.java:81)
at io.reactivex.internal.operators.flowable.FlowableConcatMap$ConcatMapImmediate.drain(FlowableConcatMap.java:266)
at io.reactivex.internal.operators.flowable.FlowableConcatMap$BaseConcatMapSubscriber.onNext(FlowableConcatMap.java:159)
at io.reactivex.internal.operators.flowable.FlowableMap$MapSubscriber.onNext(FlowableMap.java:57)
at io.reactivex.internal.operators.flowable.FlowableOnBackpressureBuffer$BackpressureBufferSubscriber.onNext(FlowableOnBackpressureBuffer.java:110)
at io.reactivex.processors.PublishProcessor$PublishSubscription.onNext(PublishProcessor.java:311)
at io.reactivex.processors.PublishProcessor.onNext(PublishProcessor.java:195)
at com.insypro.inspector3.utils.PictureObserver.onChange(PictureObserver.kt:48)
at android.database.ContentObserver.onChange(ContentObserver.java:145)
at android.database.ContentObserver.dispatchChange(ContentObserver.java:196)
at android.database.ContentObserver.-wrap0(ContentObserver.java)
at android.database.ContentObserver$Transport.onChange(ContentObserver.java:231)
09-24 15:53:03.658 com.insypro.inspector3.debug W/System.err: at android.database.IContentObserver$Stub.onTransact(IContentObserver.java:62)
at android.os.Binder.execTransact(Binder.java:573)
По сути, я использую contentobserver для прослушивания сделанных снимков.Однако после запуска планшетов, когда я впервые открываю камеру, создается впечатление, что кнопка захвата не отвечает, и я получаю эту ошибку.После повторного открытия камеры она снова работает нормально.
Это мой контент Observer:
class PictureObserver(private var appContext: WeakReference<Context>) : ContentObserver(null) {
private val pictureSubject: PublishProcessor<Uri> = PublishProcessor.create()
fun observe(): Flowable<Picture> =
pictureSubject.onBackpressureBuffer()
.map { uri ->
appContext.get()?.let {
val cursor = it.contentResolver
.query(uri,
null,
null,
null,
"date_added DESC, _id DESC")
if (cursor != null) {
if (cursor.moveToNext()) {
val dataColumn = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)
val filePath = cursor.getString(dataColumn)
val name = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DISPLAY_NAME)
return@map Picture()
.apply {
this.name = cursor.getString(name)
this.path = filePath
}
}
cursor.close()
}
return@map Picture()
}
return@map Picture()
}
override fun onChange(selfChange: Boolean, uri: Uri) {
pictureSubject.onNext(uri)
}
}