1. 程式人生 > >java.net.MalformedURLException: no protocol--Glide

java.net.MalformedURLException: no protocol--Glide

no protocol翻譯為無協議,像http/https都是最常用的指定協議,網路請求url格式不規範,就會造成該exception。
列印log:/storage/emulated/......的確是無協議,但是我就是載入本地圖片的啊。
Glide圖片載入庫不僅可以載入網路資源也可以載入本地資源圖片,但是為什麼?

 public static void displayRound(Context context, ImageView imageView, String url) {
        if (imageView == null) {
            throw new IllegalArgumentException("argument error");
        }
        String cookie = SharedPreferencesUtil.getInstance().getString("cookie");
        GlideUrl glideUrl = new GlideUrl(url, new LazyHeaders.Builder().addHeader("Set-Cookie", cookie).build());
        RequestOptions  requestOptions = new RequestOptions()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .placeholder(R.mipmap.ic_default_head)
                .error(R.mipmap.ic_default_head)
                .centerCrop()
                .fallback(new ColorDrawable(Color.RED))
                .transform(new GlideRoundTransformUtil())//圓角
        ;


        Glide.with(context).load(glideUrl)
                .apply(requestOptions)
                .into(imageView);

    }

簡單看了看載入圖片的程式碼,

 GlideUrl glideUrl = new GlideUrl(url, new LazyHeaders.Builder().addHeader("Set-Cookie", cookie).build());

本公司後臺需要保持個session會話,因為gilde不新增session會被拒絕訪問,這段程式碼就是給glide新增session用的。

Glide.with(context).load(glideUrl)
                .apply(requestOptions)
                .into(imageView);

這裡直接load(glideUrl),預設該請求為網路請求,所以載入本地圖片資源時報了no protocol
重新起個方法載入就好:

 public static void displayLocalPic(Context context, ImageView imageView, String url) {
        if (imageView == null) {
            throw new IllegalArgumentException("argument error");
        }

        RequestOptions   requestOptions = new RequestOptions()
                .placeholder(new ColorDrawable(Color.BLACK))
                .error(new ColorDrawable(Color.BLUE))
                .centerCrop();

        Glide.with(context).load(url)
                .apply(requestOptions)
                .into(imageView);

    }