Как заставить Glide отображать локальную фотографию с URI - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь заставить Glide отобразить локальный файл JPEG в ImageView.

Я создал этот простой пример, который показывает мою проблему. Обычно я получаю URI программно, но для этого примера я просто использую жестко закодированную строку URI из одного из файлов, которые я пытаюсь отобразить. Когда я запускаю его, ImageView становится пустым.

package com.example.g1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageView = (ImageView) findViewById(R.id.image);

        Glide.with(this)
                .load("content://org.chromium.arc.file_system.fileprovider/download/assets/images/DSC01062.JPG")
                .into(imageView);
    }
}

А вот макет

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/image"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:scaleType="fitCenter"
        app:layout_constraintBottom_toTopOf="@+id/textView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="356dp"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/image" />

</androidx.constraintlayout.widget.ConstraintLayout>

Есть идеи, что я делаю неправильно?

1 Ответ

0 голосов
/ 18 февраля 2020

Вот Logcat. Я не понимаю ошибку, поскольку поиски говорят о намерениях, и я не использую их. Я полагаю, что скольжение - это ....

2020-02-17 20:40:06.140 17066-17066/com.example.g1 W/Glide: Failed to find GeneratedAppGlideModule. You should include an annotationProcessor compile dependency on com.github.bumptech.glide:compiler in your application and a @GlideModule annotated AppGlideModule implementation or LibraryGlideModules will be silently ignored
2020-02-17 20:40:06.239 17066-17066/com.example.g1 D/OpenGLRenderer: Skia GL Pipeline
2020-02-17 20:40:06.394 17066-17129/com.example.g1 E/GlideExecutor: Request threw uncaught throwable
    java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{58532fd 17066:com.example.g1/u0a119} (pid=17066, uid=10119) that is not exported from UID 10026
        at android.os.Parcel.createException(Parcel.java:1950)
        at android.os.Parcel.readException(Parcel.java:1918)
        at android.os.Parcel.readException(Parcel.java:1868)
        at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4152)
        at android.app.ActivityThread.acquireProvider(ActivityThread.java:6229)
        at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2592)
        at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1828)
        at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1442)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1295)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:1015)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResourceFromUri(StreamLocalUriFetcher.java:74)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:50)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:13)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393)
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.am.ActivityManagerService.getContentProviderImpl(ActivityManagerService.java:12422)
        at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:12819)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:357)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3376)
        at android.os.Binder.execTransact(Binder.java:731)
2020-02-17 20:40:06.409 17066-17128/com.example.g1 D/vndksupport: Loading /vendor/lib64/hw/gralloc.cros.so from current namespace instead of sphal namespace.
2020-02-17 20:40:06.530 17066-17066/com.example.g1 W/Glide: Load failed for content://org.chromium.arc.file_system.fileprovider/download/assets/images/DSC01062.JPG with size [200x200]
    class com.bumptech.glide.load.engine.GlideException: Failed to load resource
    There was 1 cause:
    java.lang.SecurityException(Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{58532fd 17066:com.example.g1/u0a119} (pid=17066, uid=10119) that is not exported from UID 10026)
     call GlideException#logRootCauses(String) for more detail
      Cause (1 of 1): class java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{58532fd 17066:com.example.g1/u0a119} (pid=17066, uid=10119) that is not exported from UID 10026
2020-02-17 20:40:06.532 17066-17066/com.example.g1 I/Glide: Root cause (1 of 1)
    java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{58532fd 17066:com.example.g1/u0a119} (pid=17066, uid=10119) that is not exported from UID 10026
        at android.os.Parcel.createException(Parcel.java:1950)
        at android.os.Parcel.readException(Parcel.java:1918)
        at android.os.Parcel.readException(Parcel.java:1868)
        at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4152)
        at android.app.ActivityThread.acquireProvider(ActivityThread.java:6229)
        at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2592)
        at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1828)
        at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1442)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1295)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:1015)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResourceFromUri(StreamLocalUriFetcher.java:74)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:50)
        at com.bumptech.glide.load.data.StreamLocalUriFetcher.loadResource(StreamLocalUriFetcher.java:13)
        at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
        at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:100)
        at com.bumptech.glide.load.engine.SourceGenerator.startNextLoad(SourceGenerator.java:70)
        at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:63)
        at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:310)
        at com.bumptech.glide.load.engine.DecodeJob.runWrapped(DecodeJob.java:279)
        at com.bumptech.glide.load.engine.DecodeJob.run(DecodeJob.java:234)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
        at com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run(GlideExecutor.java:393)
     Caused by: android.os.RemoteException: Remote stack trace:
        at com.android.server.am.ActivityManagerService.getContentProviderImpl(ActivityManagerService.java:12422)
        at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:12819)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:357)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3376)
        at android.os.Binder.execTransact(Binder.java:731)
2020-02-17 20:40:06.766 17066-17128/com.example.g1 W/EGL-MAIN: MESA-LOADER: failed to open vgem (search paths /system/lib64/dri:/system/vendor/lib64/dri)
2020-02-17 20:40:06.849 17066-17128/com.example.g1 I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
2020-02-17 20:40:06.849 17066-17128/com.example.g1 I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
2020-02-17 20:40:06.849 17066-17128/com.example.g1 I/OpenGLRenderer: Initialized EGL, version 1.4
2020-02-17 20:40:06.850 17066-17128/com.example.g1 D/OpenGLRenderer: Swap behavior 2
2020-02-17 20:40:06.850 17066-17128/com.example.g1 E/OpenGLRenderer: Device claims wide gamut support, cannot find matching config, error = EGL_SUCCESS
2020-02-17 20:40:06.910 17066-17128/com.example.g1 D/vndksupport: Loading /vendor/lib64/hw/android.hardware.graphics.mapper@2.0-impl.so from current namespace instead of sphal namespace.
2020-02-17 20:40:06.910 17066-17128/com.example.g1 D/vndksupport: Loading /vendor/lib64/hw/gralloc.cros.so from current namespace instead of sphal namespace.

Я могу открыть URI в моем приложении без проблем.

...