關(guān)于安卓glide加載https出錯(cuò)

內(nèi)容如題损痰,在glide加載某些https鏈接時(shí)列粪,會(huì)報(bào)ssl exception錯(cuò)誤审磁,原因是他們的鏈接是處于不信任類型(不安全)谈飒,所以會(huì)報(bào)錯(cuò),導(dǎo)致圖片加載失敗态蒂。
環(huán)境:
AndroidStudio fox
win10
glide4.0+
解決方法如下:

(一)引入相關(guān)依賴

 "glide"                               : "com.github.bumptech.glide:glide:4.9.0",
 "glide-compiler"                      : "com.github.bumptech.glide:compiler:4.9.0",
 "glide-okhttp3-integration"           : "com.github.bumptech.glide:okhttp3-integration:4.9.0",

api dp["glide"]
api dp["glide-okhttp3-integration"]
kapt dp["glide-compiler"]

build.gradle還需要申明kotlin相關(guān)依賴:

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

(二)自定義AppGlideModule

這里通過繼承AppGlideModule杭措,重寫其中方法,設(shè)置所有請(qǐng)求均是"信任"钾恢,允許訪問手素,從而解決標(biāo)題出現(xiàn)的問題。
直接上代碼:

GlideCache.java

/**
 * 若要使用自定義module,外部必須使用glideapp進(jìn)行調(diào)用
 */
@GlideModule
public class GlideCache extends AppGlideModule {
    private String appRootPath = null;

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        //手機(jī)app路徑--目前該路徑是不用權(quán)限即可保存的路徑
        appRootPath = context.getFilesDir().getPath();
        Log.d("glide", "glide 圖片緩存路徑:" + appRootPath);
        // 100 MB
        int diskCacheSizeBytes = 1024 * 1024 * 100;
        builder.setDiskCache(new DiskLruCacheFactory(appRootPath + "/GlideDisk", diskCacheSizeBytes));
    }

    @Override
    public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
        OkHttpClient client = GlideUnsafeOkHttpClient.getUnsafeOkHttpClient();
        registry.replace(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory(client));
    }
}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.north.light.libloadpic">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />

    <application>
        <meta-data
            android:name="com.north.light.libloadpic.glide.GlideCache"
            android:value="AppGlideModule" />
    </application>
</manifest>

GlideUnsafeOkHttpClient.java

public class GlideUnsafeOkHttpClient {
    public static OkHttpClient getUnsafeOkHttpClient() {
        try {
            // Create a trust manager that does not validate certificate chains
            final TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType)
                                throws CertificateException {
                        }

                        @Override
                        public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType)
                                throws CertificateException {
                        }

                        @Override
                        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                            return new java.security.cert.X509Certificate[]{};
                        }
                    }
            };

            // Install the all-trusting trust manager
            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

            // Create an ssl socket factory with our all-trusting manager
            final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();

            OkHttpClient.Builder builder = new OkHttpClient.Builder();
            builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);
            builder.hostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            });

            builder.connectTimeout(20, TimeUnit.SECONDS);
            builder.readTimeout(20, TimeUnit.SECONDS);

            OkHttpClient okHttpClient = builder.build();
            return okHttpClient;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

至此瘩蚪,代碼設(shè)置完成泉懦,下面是使用注意,下面是使用注意疹瘦,下面是使用注意崩哩。

在加載圖片時(shí),不要再使用glide對(duì)象言沐,直接使用glideapp對(duì)象邓嘹,示例如下:


GlideApp調(diào)用

至此,完成险胰。
注意點(diǎn):
(1)AppGlideModule繼承汹押,重寫,申明
(2)加載圖片時(shí)起便,加載圖片對(duì)象的調(diào)用(GlideApp)

that's all---------------------------------------------------------------------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棚贾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子榆综,更是在濱河造成了極大的恐慌妙痹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奖年,死亡現(xiàn)場(chǎng)離奇詭異细诸,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)陋守,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門震贵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人水评,你說我怎么就攤上這事猩系。” “怎么了中燥?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵寇甸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)拿霉,這世上最難降的妖魔是什么吟秩? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮绽淘,結(jié)果婚禮上涵防,老公的妹妹穿的比我還像新娘。我一直安慰自己沪铭,他們只是感情好壮池,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杀怠,像睡著了一般椰憋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赔退,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天橙依,我揣著相機(jī)與錄音,去河邊找鬼离钝。 笑死票编,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卵渴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鲤竹,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼浪读!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辛藻,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤碘橘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后吱肌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痘拆,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年氮墨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纺蛆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡规揪,死狀恐怖桥氏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猛铅,我是刑警寧澤字支,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響堕伪,放射性物質(zhì)發(fā)生泄漏揖庄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一欠雌、第九天 我趴在偏房一處隱蔽的房頂上張望蹄梢。 院中可真熱鬧,春花似錦桨昙、人聲如沸检号。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽齐苛。三九已至,卻和暖如春桂塞,著一層夾襖步出監(jiān)牢的瞬間凹蜂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工阁危, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玛痊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓狂打,卻偏偏與公主長(zhǎng)得像擂煞,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子趴乡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容