Skip to content

Commit 8010590

Browse files
authored
Fix Android O compatibility (#33)
* Update Cloudinary and Evernote dependencies * Use new notification API * Fix launch-mode bug for older Android versions.
1 parent 143a849 commit 8010590

File tree

9 files changed

+38
-14
lines changed

9 files changed

+38
-14
lines changed

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ [email protected]
1414
# These two properties must use these exact names to be compatible with 'gradle install' plugin.
1515
group=com.cloudinary
1616
version=1.20.0
17-
cloudinaryLibsVersion=1.14.0
18-
androidSupportVersion=25.4.0
17+
cloudinaryLibsVersion=1.16.0
18+
androidSupportVersion=26.0.1
1919
org.gradle.jvmargs=-Xmx1024m

lib/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
apply plugin: 'com.android.library'
22

33
android {
4-
compileSdkVersion 25
5-
buildToolsVersion "25.0.3"
4+
compileSdkVersion 26
5+
buildToolsVersion "26.0.1"
66

77
defaultConfig {
88
minSdkVersion 14
9-
targetSdkVersion 25
9+
targetSdkVersion 26
1010
versionCode 1
1111
versionName "1.0"
1212

@@ -39,7 +39,7 @@ android {
3939
dependencies {
4040
compile "com.cloudinary:cloudinary-core:${cloudinaryLibsVersion}"
4141
compile "com.android.support:support-core-utils:${androidSupportVersion}"
42-
compile 'com.evernote:android-job:1.1.8'
42+
compile 'com.evernote:android-job:1.2.0'
4343
testCompile 'junit:junit:4.12'
4444
testCompile "com.cloudinary:cloudinary-test-common:${cloudinaryLibsVersion}"
4545
androidTestCompile 'org.awaitility:awaitility:3.0.0'

lib/src/main/java/com/cloudinary/android/AndroidJobStrategy.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ static JobRequest adapt(UploadRequest request) {
3636
.setBackoffCriteria(policy.getBackoffMillis(), adaptPolicy(policy.getBackoffPolicy()))
3737
.setRequiresCharging(policy.isRequiresCharging())
3838
.setRequiresDeviceIdle(policy.isRequiresIdle())
39-
.setPersisted(true)
4039
.setExtras(extras)
4140
.setRequirementsEnforced(true)
4241
.build();

sample-signed/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 25
5-
buildToolsVersion "25.0.3"
4+
compileSdkVersion 26
5+
buildToolsVersion "26.0.1"
66
defaultConfig {
77
applicationId "com.cloudinary.android.sample.signed"
88
minSdkVersion 19
9-
targetSdkVersion 25
9+
targetSdkVersion 26
1010
versionCode 1
1111
versionName "1.0"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

sample/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 25
5-
buildToolsVersion "25.0.3"
4+
compileSdkVersion 26
5+
buildToolsVersion "26.0.1"
66
defaultConfig {
77
applicationId "com.cloudinary.android.sample"
88
minSdkVersion 19
9-
targetSdkVersion 25
9+
targetSdkVersion 26
1010
versionCode 1
1111
versionName "1.0"
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

sample/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<activity
1515
android:name=".app.MainActivity"
1616
android:label="@string/app_name"
17-
android:launchMode="singleInstance"
17+
android:launchMode="singleTop"
1818
android:screenOrientation="portrait"
1919
android:theme="@style/AppTheme.NoActionBar">
2020
<intent-filter>

sample/src/main/java/com/cloudinary/android/sample/app/CloudinaryService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public void onCreate() {
4848
builder = new NotificationCompat.Builder(this);
4949
builder.setContentTitle("Uploading to Cloudinary...")
5050
.setSmallIcon(R.drawable.ic_launcher)
51+
.setChannelId(MainApplication.NOTIFICATION_CHANNEL_ID)
5152
.setContentIntent(PendingIntent.getActivity(this, 999,
5253
new Intent(this, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT).setAction(ACTION_STATE_IN_PROGRESS),
5354
0))
@@ -68,6 +69,7 @@ private android.support.v4.app.NotificationCompat.Builder getBuilder(String requ
6869
return new NotificationCompat.Builder(this)
6970
.setSmallIcon(R.drawable.ic_launcher)
7071
.setAutoCancel(true)
72+
.setChannelId(MainApplication.NOTIFICATION_CHANNEL_ID)
7173
.setContentIntent(PendingIntent.getActivity(this, 1234,
7274
new Intent(this, MainActivity.class)
7375
.setAction(actionFromStatus(status))

sample/src/main/java/com/cloudinary/android/sample/app/MainApplication.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,21 @@
22

33

44
import android.app.Application;
5+
import android.app.NotificationChannel;
6+
import android.app.NotificationManager;
7+
import android.content.Context;
8+
import android.os.Build;
59
import android.os.Handler;
610
import android.os.Looper;
711

812
import com.cloudinary.android.LogLevel;
913
import com.cloudinary.android.MediaManager;
1014
import com.cloudinary.android.policy.GlobalUploadPolicy;
1115
import com.cloudinary.android.policy.UploadPolicy;
16+
import com.cloudinary.android.sample.R;
1217

1318
public class MainApplication extends Application {
19+
public static final String NOTIFICATION_CHANNEL_ID = "CLOUDINARY_CHANNEL";
1420
static MainApplication _instance;
1521
private Handler mainThreadHandler;
1622

@@ -36,9 +42,24 @@ public void onCreate() {
3642
.networkPolicy(UploadPolicy.NetworkType.ANY)
3743
.build());
3844

45+
createNotificationChannel();
46+
3947
_instance = this;
4048
}
4149

50+
private void createNotificationChannel() {
51+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
52+
CharSequence name = getString(R.string.channel_name);
53+
String description = getString(R.string.channel_description);
54+
int importance = NotificationManager.IMPORTANCE_DEFAULT;
55+
NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, name, importance);
56+
channel.setDescription(description);
57+
channel.setVibrationPattern(new long[]{});
58+
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
59+
notificationManager.createNotificationChannel(channel);
60+
}
61+
}
62+
4263
public void runOnMainThread(Runnable runnable) {
4364
mainThreadHandler.post(runnable);
4465
}

sample/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,6 @@
7373
<string name="effect_video_name_reverse">Reverse</string>
7474
<string name="open_url">Open url</string>
7575
<string name="request_cancelled">Request cancelled successfully</string>
76+
<string name="channel_name">Cloudinary</string>
77+
<string name="channel_description">Notifications regarding progress and status updates for Cloudinary resources</string>
7678
</resources>

0 commit comments

Comments
 (0)