diff --git a/build.gradle b/build.gradle index 3200257b..510736b9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,22 +1,21 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.6.0' + ext.buildToolsVersion = "30.0.3" repositories { + mavenCentral() jcenter() google() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:7.0.4' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' } } allprojects { repositories { + jcenter() mavenLocal() jcenter() google() diff --git a/filestack/build.gradle b/filestack/build.gradle index 09b419d4..b8f45313 100644 --- a/filestack/build.gradle +++ b/filestack/build.gradle @@ -1,5 +1,4 @@ plugins { - id 'com.github.dcendents.android-maven' version '2.0' id 'com.jfrog.bintray' version '1.7.3' } @@ -11,11 +10,11 @@ version = '5.3.0' project.archivesBaseName = 'filestack-android' android { - compileSdkVersion 28 + compileSdkVersion 31 defaultConfig { - minSdkVersion 16 - targetSdkVersion 28 + minSdkVersion 21 + targetSdkVersion 31 versionCode 1 versionName version @@ -43,7 +42,7 @@ dependencies { implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:customtabs:28.0.0' - + implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' @@ -112,4 +111,4 @@ bintray { released = new Date() } } -} +} \ No newline at end of file diff --git a/filestack/src/main/AndroidManifest.xml b/filestack/src/main/AndroidManifest.xml index 1bb5843f..fca6b789 100644 --- a/filestack/src/main/AndroidManifest.xml +++ b/filestack/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ diff --git a/filestack/src/main/java/com/filestack/android/FsActivity.java b/filestack/src/main/java/com/filestack/android/FsActivity.java index 206adf66..4399df7f 100644 --- a/filestack/src/main/java/com/filestack/android/FsActivity.java +++ b/filestack/src/main/java/com/filestack/android/FsActivity.java @@ -208,8 +208,11 @@ protected void onStop() { super.onStop(); SharedPreferences preferences = getPreferences(MODE_PRIVATE); - String sessionToken = Util.getClient().getSessionToken(); - preferences.edit().putString(PREF_SESSION_TOKEN, sessionToken).apply(); + if (Util.getClient() != null) { + String sessionToken = Util.getClient().getSessionToken(); + preferences.edit().putString(PREF_SESSION_TOKEN, sessionToken).apply(); + } + Util.getSelectionSaver().setItemChangeListener(null); } @@ -266,8 +269,9 @@ public boolean onCreateOptionsMenu(Menu menu) { menu.findItem(R.id.action_about).setVisible(showVersionInfo); for (int i = 0; i < menu.size(); i++) { MenuItem item = menu.getItem(i); - Drawable drawable = DrawableCompat.wrap(item.getIcon()); - if (drawable != null) { + Drawable icon = item.getIcon(); + Drawable drawable = DrawableCompat.wrap(icon); + if (icon != null && drawable != null) { drawable.setColorFilter(theme.getBackgroundColor(), PorterDuff.Mode.SRC_ATOP); DrawableCompat.setTint(drawable, theme.getBackgroundColor()); item.setIcon(drawable); diff --git a/filestack/src/main/java/com/filestack/android/internal/CloudListAdapter.java b/filestack/src/main/java/com/filestack/android/internal/CloudListAdapter.java index b75481c0..a79b03e6 100644 --- a/filestack/src/main/java/com/filestack/android/internal/CloudListAdapter.java +++ b/filestack/src/main/java/com/filestack/android/internal/CloudListAdapter.java @@ -76,6 +76,9 @@ class CloudListAdapter extends RecyclerView.Adapter impleme currentPath = saveInstanceState.getString(STATE_CURRENT_PATH); folders = (HashMap) saveInstanceState.getSerializable(STATE_FOLDERS); nextTokens = (HashMap) saveInstanceState.getSerializable(STATE_NEXT_TOKENS); + if (folders == null || folders.get(currentPath) == null) { + folders.put(currentPath, new ArrayList()); + } } else { folders = new HashMap<>(); nextTokens = new HashMap<>(); diff --git a/filestack/src/main/java/com/filestack/android/internal/UploadService.java b/filestack/src/main/java/com/filestack/android/internal/UploadService.java index 27c70197..513262b1 100644 --- a/filestack/src/main/java/com/filestack/android/internal/UploadService.java +++ b/filestack/src/main/java/com/filestack/android/internal/UploadService.java @@ -127,7 +127,7 @@ private FileLink upload(Selection selection, StorageOptions baseOptions) { String mimeType = selection.getMimeType(); StorageOptions options = baseOptions.newBuilder() - .filename(name) + .filename(baseOptions.getFilename() + name) .mimeType(mimeType) .build(); diff --git a/filestack/src/main/java/com/filestack/android/internal/Util.java b/filestack/src/main/java/com/filestack/android/internal/Util.java index 2486e168..9f7bfa7a 100644 --- a/filestack/src/main/java/com/filestack/android/internal/Util.java +++ b/filestack/src/main/java/com/filestack/android/internal/Util.java @@ -3,6 +3,7 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.os.Build; import android.os.Environment; import android.support.v4.content.FileProvider; import android.support.v4.content.MimeTypeFilter; @@ -188,8 +189,14 @@ public static File createMovieFile(Context context) throws IOException { // If we don't do this, we'll get the exception when sending the URI to the camera app // See the FileProvider example in https://developer.android.com/training/camera/photobasics public static Uri getUriForInternalMedia(Context context, File file) { - String authority = context.getPackageName() + ".fileprovider"; - return FileProvider.getUriForFile(context, authority, file); + Uri uri; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + String authority = context.getPackageName() + ".fileprovider"; + uri = FileProvider.getUriForFile(context, authority, file); + } else { + uri = Uri.fromFile(file); + } + return uri; } // TODO This doesn't seem to work diff --git a/filestack/src/main/res/layout-sw600dp/filestack__activity_filestack.xml b/filestack/src/main/res/layout-sw600dp/filestack__activity_filestack.xml deleted file mode 100644 index 28a16a6b..00000000 --- a/filestack/src/main/res/layout-sw600dp/filestack__activity_filestack.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/gradle.properties b/gradle.properties index aac7c9b4..82695ffd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,6 +10,7 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx1536m +android.debug.obsoleteApi=true # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e362f97d..a72b2e8a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip diff --git a/samples/form/app/build.gradle b/samples/form/app/build.gradle index 5ea2d585..e279ae3c 100644 --- a/samples/form/app/build.gradle +++ b/samples/form/app/build.gradle @@ -4,8 +4,8 @@ android { compileSdkVersion 27 defaultConfig { applicationId "com.filestack.android.samples.form" - minSdkVersion 19 - targetSdkVersion 27 + minSdkVersion 21 + targetSdkVersion 31 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/tester/build.gradle b/tester/build.gradle index 51c44fd4..75307ef3 100644 --- a/tester/build.gradle +++ b/tester/build.gradle @@ -5,8 +5,8 @@ android { defaultConfig { applicationId "com.filestack.android.demo" - minSdkVersion 16 - targetSdkVersion 28 + minSdkVersion 21 + targetSdkVersion 31 versionCode 1 versionName "1.0" diff --git a/tester/src/main/AndroidManifest.xml b/tester/src/main/AndroidManifest.xml index ce41a559..812477ab 100644 --- a/tester/src/main/AndroidManifest.xml +++ b/tester/src/main/AndroidManifest.xml @@ -10,7 +10,8 @@ android:theme="@style/AppTheme"> + android:name=".MainActivity" + android:exported="true">