Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,12 @@ Currently you can change:
* choose whether you want rectangle or oval crop area
* the UI colors (Toolbar, StatusBar, active widget state)
* and more...

Since version 2.2.7 in case if you need to change transport protocol, setup timeout etc. You may set your `OkHttpClient` next way:

```java
new UCropInitializer().setOkHttpClient(client);
```

# Compatibility

Expand Down
1 change: 1 addition & 0 deletions sample/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,6 @@ dependencies {
implementation "androidx.appcompat:appcompat:1.1.0"
implementation "androidx.core:core:1.1.0"
implementation "androidx.constraintlayout:constraintlayout:1.1.3"
implementation "com.squareup.okhttp3:okhttp:3.12.13"
implementation project(':ucrop')
}
1 change: 1 addition & 0 deletions sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<uses-permission android:name="android.permission.INTERNET" />

<application
android:name=".SampleApp"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true"
Expand Down
33 changes: 33 additions & 0 deletions sample/src/main/java/com/yalantis/ucrop/sample/SampleApp.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.yalantis.ucrop.sample;

import android.app.Application;

import com.yalantis.ucrop.UCropInitializer;

import java.util.Collections;

import okhttp3.ConnectionSpec;
import okhttp3.OkHttpClient;

public class SampleApp extends Application {

@Override
public void onCreate() {
super.onCreate();
setUcropHttpClient();
}

private void setUcropHttpClient() {
ConnectionSpec cs = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
.allEnabledCipherSuites()
.allEnabledTlsVersions()
.build();

OkHttpClient client = new OkHttpClient.Builder()
.connectionSpecs(Collections.singletonList(cs))
.build();

new UCropInitializer()
.setOkHttpClient(client);
}
}
3 changes: 2 additions & 1 deletion ucrop/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,6 @@ dependencies {
implementation "androidx.appcompat:appcompat:${androidx_appcompat_version}"
implementation "androidx.exifinterface:exifinterface:${androidx_exifinterface_version}"
implementation "androidx.transition:transition:${androidx_transition_version}"
implementation "com.squareup.okhttp3:okhttp:3.12.1"
// OkHttp3 versions above 3.12.x don't support pre-Lollipop Android versions (API 21)
implementation "com.squareup.okhttp3:okhttp:3.12.13"
}
35 changes: 35 additions & 0 deletions ucrop/src/main/java/com/yalantis/ucrop/OkHttpClientStore.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.yalantis.ucrop;

import androidx.annotation.NonNull;

import okhttp3.OkHttpClient;

public class OkHttpClientStore {

private OkHttpClientStore() {}

public final static OkHttpClientStore INSTANCE = new OkHttpClientStore();

private OkHttpClient client;

/**
* @return stored OkHttpClient if it was already set,
* or just an instance created via empty constructor
* and store it
*/
@NonNull
public OkHttpClient getClient() {
if (client == null) {
client = new OkHttpClient();
}
return client;
}

/**
* @param client OkHttpClient for downloading bitmap form remote Uri,
* it may contain any preferences you need
*/
void setClient(@NonNull OkHttpClient client) {
this.client = client;
}
}
18 changes: 18 additions & 0 deletions ucrop/src/main/java/com/yalantis/ucrop/UCropInitializer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.yalantis.ucrop;

import androidx.annotation.NonNull;

import okhttp3.OkHttpClient;

public class UCropInitializer {

/**
* @param client OkHttpClient for downloading bitmap form remote Uri,
* it may contain any preferences you need
*/
public UCropInitializer setOkHttpClient(@NonNull OkHttpClient client) {
OkHttpClientStore.INSTANCE.setClient(client);
return this;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.yalantis.ucrop.OkHttpClientStore;
import com.yalantis.ucrop.callback.BitmapLoadCallback;
import com.yalantis.ucrop.model.ExifInfo;
import com.yalantis.ucrop.util.BitmapLoadUtils;
Expand Down Expand Up @@ -204,15 +205,15 @@ private void downloadFile(@NonNull Uri inputUri, @Nullable Uri outputUri) throws
throw new NullPointerException("Output Uri is null - cannot download image");
}

OkHttpClient client = new OkHttpClient();
OkHttpClient client = OkHttpClientStore.INSTANCE.getClient();

BufferedSource source = null;
Sink sink = null;
Response response = null;
try {
Request request = new Request.Builder()
.url(inputUri.toString())
.build();
.url(inputUri.toString())
.build();
response = client.newCall(request).execute();
source = response.body().source();

Expand Down