почему изображение с SD-карты не отображается? - PullRequest
0 голосов
/ 19 октября 2018

Я использовал этот код для отображения изображения с SD-карты.Результат показывает, что путь существует, и он правильный, но изображение не появилось.Как я могу решить эту проблему?

public class MainActivity extends Activity {

    ImageView processedImgA;
    static String imgSouce = Environment.getExternalStorageDirectory()+ "/folder/image.jpg";

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

        processedImgA = (ImageView)findViewById(R.id.processedimg_a);

        Bitmap bitmap_Source = BitmapFactory.decodeFile(imgSouce);

        processedImgA.setImageBitmap(bitmap_Source);


    }



}

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Если targetAPI вашего приложения 23+ (Android 6.0+), вам следует запросить разрешение на чтение, прежде чем читать файл с SD-карты хранилища.Мой совет, вы можете использовать rxpermission для запроса разрешения.

implementation com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar//for add rxpermissions
implementation io.reactivex.rxjava2:rxjava:2.1.4//for add rxjava

// вам нужно добавить код из двух строк выше в файле app / build.gradle.

public class MainActivity extends Activity {

    ImageView processedImgA;
    static String imgSouce = Environment.getExternalStorageDirectory()+ "/folder/image.jpg";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RxPermissions rxpermission = new RxPermissions(this);
        rxpermission.
        processedImgA = (ImageView)findViewById(R.id.processedimg_a);
        request(Manifest.permission.READ_EXTERNAL_STORAGE)
        .subscribe(grated->{
            if (!grated) {
                //toast permission denied
            }else{
                //read bitmap in here
                 Bitmap bitmap_Source = BitmapFactory.decodeFile(imgSouce);

                 processedImgA.setImageBitmap(bitmap_Source);  
            }
        });

    }

}
0 голосов
/ 19 октября 2018

Попробуйте это

String imgSouce = Environment.getExternalStorageDirectory()+ "/folder/image.jpg";
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(imgSouce, bmOptions);
processedImgA.setImageBitmap(bitmap);

ТАКЖЕ убедитесь, что вы добавили READ_EXTERNAL_STORAGE разрешение и проверили время выполнения для 6.0 устройств

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...