2017-02-09 4 views
0

私のアプリはHTTPSソースの画像を使用していますが、Android上ではAPI 21以上で正常に読み込まれていますが、Android版のAPI 16(アプリ用の最小API)からAPI 19古いAndroidバージョンでTLSを有効にする方法はありますか? Lollipop以上ではデフォルトで有効になっているようです。助けていただければ幸いです!ありがとうございます。古いデバイスのPicasaライブラリでHTTPS接続を有効にする方法はありますか?

答えて

0

古いAndroidバージョンでTLSを有効にする方法はありますか?

TLSはAndroid 1.0以降Androidで有効になっています。特定のレベルのTLSと特定のルート証明書は長年にわたって変化しています(証明書の場合、古いデバイスでは製造元によって異なる場合があります)。

私は19

APIにAPI 16(私のアプリのための分。API)からAndroidのバージョンではピカソによって記録された例外のチェックLogCatをこれらのイメージをロードすることはできません。または、画像を直接ダウンロードするテスト(例:OkHttp、HttpURLConnection)をいくつか試して、例外が発生しないようにしてください。

これらの例外に対処する方法がわからない場合は、minimum, complete, and verifiable exampleという別のスタックオーバーフローの質問をしてください。コードには、コード、失敗したURL、例外。

+1

をこのクライアントを追加します。あなたは[SSLLabs](https://www.ssllabs.com) – maxoumime

+0

で確認できます。ありがとう、私は後でコードで質問を投稿します – Hamstersztyk

0

OKHttpを使用して、以前のKitKatデバイスでhttp2を有効にすることができます。

List<Protocol> protocols = new ArrayList<>(); 
      protocols.add(Protocol.HTTP_2); 
      protocols.add(Protocol.HTTP_1_1); 



      SSLContext sc = SSLContext.getInstance("TLSv1.2"); 
      sc.init(null, null, null); 

      ConnectionSpec cs = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) 
        .tlsVersions(TlsVersion.TLS_1_2) 
        .build(); 

      List<ConnectionSpec> specs = new ArrayList<>(); 
      specs.add(cs); 
      specs.add(ConnectionSpec.COMPATIBLE_TLS); 
      specs.add(ConnectionSpec.CLEARTEXT); 

      mClient = new OkHttpClient.Builder() 
        .protocols(protocols) 
        .connectionSpecs(specs) 
        .sslSocketFactory(new Tls12SocketFactory(sc.getSocketFactory())) 
        .build(); 

また、多分あなたの証明書またはサーバがそれらのバージョン(例えば、無効時代遅れまたは非セキュアなプロトコル)と互換性がありませんピカソ

if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { 
       Picasso picasso = new Picasso.Builder(getApplicationContext()) 
         .downloader(new OkHttp3Downloader(mClient)) 
         .build(); 
       Picasso.setSingletonInstance(picasso); 
      } 
関連する問題