Невозможно получить изображение по URL-адресу, используя url.openConnection или Picasso в Android - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь получить изображения с URL-адресов в классе ArrayAdapter, но безуспешно. Я получаю сообщение об ошибке, но оно пустое. Есть предложения по его устранению? Спасибо.

Если попытаться получить изображения с помощью url.openConnection

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...
    ArrayList<String> imageFiles = post.imageFiles;
    for (int i = 0; i < imageFiles.size(); i++) {
        try {
            ImageView imageView = new ImageView(context);
            URL url = new URL(imageFiles.get(i));
            Log.d("DEBUGA1-ImageURL", post.imageFiles.get(i));
            Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            imageView.setImageBitmap(bmp);
            Log.d("DEBUGA1-Successful: ", "");
        } catch (Exception e) {
            Log.d("DEBUGA1-Error: ", e.getLocalizedMessage() == null ? "error is null message" : e.getLocalizedMessage());
        }
    }
    ...
}

Печать

D/DEBUGA1-ImageURL: http://lc-IDX4LztP.cn-n1.lcfile.com/dovltUTrQUMvYA2FlPnLLAD
D/DEBUGA1-Error:: error is null message
D/DEBUGA1-ImageURL: http://lc-IDX4LztP.cn-n1.lcfile.com/KLGH4UDPqfq0PN2rqJhBK5D
D/DEBUGA1-Error:: error is null message
D/DEBUGA1-ImageURL: http://lc-IDX4LztP.cn-n1.lcfile.com/b5eiDFQGYSIf6IYC2xLISZB
D/DEBUGA1-Error:: error is null message
D/DEBUGA1-ImageURL: http://lc-IDX4LztP.cn-n1.lcfile.com/ve00QyIrnuHCkHa0bKbcNAD
D/DEBUGA1-Error:: error is null message
D/DEBUGA1-ImageURL: http://lc-IDX4LztP.cn-n1.lcfile.com/RR2CRPN1DqrhiNjeEBauL8B
D/DEBUGA1-Error:: error is null message

Если попытаться получить изображения с помощью Picasso, никаких ответов ни от onSuccess, ни от onError не будет. Хотите знать, почему

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ...
    ImageView imageView = new ImageView(context);
    ArrayList<String> imageFiles = post.imageFiles;
    for (int i = 0; i < imageFiles.size(); i++) {
        Picasso.with(context).load(imageFiles.get(i))
                .error(R.mipmap.ic_launcher)
                .fit()
                .centerInside()
                .into(imageView, new com.squareup.picasso.Callback() {
                    @Override
                    public void onSuccess() {
                        Log.d("DEBUGA2-Successful: ", "");
                    }
                    @Override
                    public void onError() {
                        Log.d("DEBUGA2-error", "onError");
                    }
                });
    }
    ...
}

1 Ответ

0 голосов
/ 11 мая 2018

Вместо
Log.d("DEBUGA1-Error: ", e.getLocalizedMessage() == null ? "error is null message" : e.getLocalizedMessage());
использование e.printStackTrace();

затем проверьте, является ли это NetworkOnMainThreadException. Если да, используйте AsyncTask для загрузки ваших изображений вместо основного потока. В противном случае вы можете отключить это ограничение, используя
StrictMode.ThreadPolicy threadPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(threadPolicy);
Также проверьте, дали ли вы разрешение ИНТЕРНЕТ в манифесте.

...