diff --git a/CHANGELOG.md b/CHANGELOG.md index 15a433ec2..b2910b9b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ Change Log --- +### 6.9.1 (2019-10-09) + +* Fix location reminders on Android 10 +* Fix CalDAV time zone issue +* Update Simplified Chinese translations - @sr093906 + ### 6.9 (2019-09-23) * Synchronize tags with CalDAV diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a9ba1cfdc..734d2c4ab 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -31,8 +31,8 @@ android { defaultConfig { testApplicationId = "org.tasks.test" applicationId = "org.tasks" - versionCode = 613 - versionName = "6.9" + versionCode = 614 + versionName = "6.9.1" targetSdkVersion(Versions.targetSdk) minSdkVersion(Versions.minSdk) multiDexEnabled = true diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b353dd7d2..2a8046a37 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ + = Build.VERSION_CODES.O; } + public static boolean atLeastQ() { + return Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q; + } + public static void assertMainThread() { if (BuildConfig.DEBUG && !isMainThread()) { throw new IllegalStateException("Should be called from main thread"); diff --git a/app/src/main/java/org/tasks/preferences/ActivityPermissionRequestor.java b/app/src/main/java/org/tasks/preferences/ActivityPermissionRequestor.java index 2e968f7de..75a467d8b 100644 --- a/app/src/main/java/org/tasks/preferences/ActivityPermissionRequestor.java +++ b/app/src/main/java/org/tasks/preferences/ActivityPermissionRequestor.java @@ -16,7 +16,7 @@ public class ActivityPermissionRequestor extends PermissionRequestor { } @Override - protected void requestPermissions(String[] permissions, int rc) { + protected void requestPermissions(int rc, String... permissions) { ActivityCompat.requestPermissions(activity, permissions, rc); } } diff --git a/app/src/main/java/org/tasks/preferences/FragmentPermissionRequestor.java b/app/src/main/java/org/tasks/preferences/FragmentPermissionRequestor.java index 4fc1be5f5..5f4445db7 100644 --- a/app/src/main/java/org/tasks/preferences/FragmentPermissionRequestor.java +++ b/app/src/main/java/org/tasks/preferences/FragmentPermissionRequestor.java @@ -15,7 +15,7 @@ public class FragmentPermissionRequestor extends PermissionRequestor { } @Override - protected void requestPermissions(String[] permissions, int rc) { + protected void requestPermissions(int rc, String... permissions) { fragment.requestPermissions(permissions, rc); } } diff --git a/app/src/main/java/org/tasks/preferences/PermissionChecker.java b/app/src/main/java/org/tasks/preferences/PermissionChecker.java index 5d213171d..49c741bbc 100644 --- a/app/src/main/java/org/tasks/preferences/PermissionChecker.java +++ b/app/src/main/java/org/tasks/preferences/PermissionChecker.java @@ -1,14 +1,12 @@ package org.tasks.preferences; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastOreo; -import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastQ; -import android.Manifest; +import android.Manifest.permission; import android.content.Context; import android.content.pm.PackageManager; import androidx.core.app.ActivityCompat; -import java.util.List; import javax.inject.Inject; import org.tasks.injection.ForApplication; import timber.log.Timber; @@ -23,27 +21,24 @@ public class PermissionChecker { } public boolean canAccessCalendars() { - return checkPermissions( - asList(Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR)); + return checkPermissions(permission.READ_CALENDAR, permission.WRITE_CALENDAR); } public boolean canAccessAccounts() { - return atLeastOreo() || checkPermission(Manifest.permission.GET_ACCOUNTS); + return atLeastOreo() || checkPermissions(permission.GET_ACCOUNTS); } public boolean canAccessLocation() { - return checkPermission(Manifest.permission.ACCESS_FINE_LOCATION); + return atLeastQ() + ? checkPermissions(permission.ACCESS_FINE_LOCATION, permission.ACCESS_BACKGROUND_LOCATION) + : checkPermissions(permission.ACCESS_FINE_LOCATION); } public boolean canAccessMic() { - return checkPermission(Manifest.permission.RECORD_AUDIO); + return checkPermissions(permission.RECORD_AUDIO); } - private boolean checkPermission(String permission) { - return checkPermissions(singletonList(permission)); - } - - private boolean checkPermissions(List permissions) { + private boolean checkPermissions(String... permissions) { for (String permission : permissions) { if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { diff --git a/app/src/main/java/org/tasks/preferences/PermissionRequestor.java b/app/src/main/java/org/tasks/preferences/PermissionRequestor.java index 71698560c..8a64d2dd3 100644 --- a/app/src/main/java/org/tasks/preferences/PermissionRequestor.java +++ b/app/src/main/java/org/tasks/preferences/PermissionRequestor.java @@ -1,6 +1,8 @@ package org.tasks.preferences; -import android.Manifest; +import static com.todoroo.andlib.utility.AndroidUtilities.atLeastQ; + +import android.Manifest.permission; public abstract class PermissionRequestor { @@ -17,7 +19,7 @@ public abstract class PermissionRequestor { public void requestMic() { if (!permissionChecker.canAccessMic()) { - requestPermission(Manifest.permission.RECORD_AUDIO, REQUEST_MIC); + requestPermissions(REQUEST_MIC, permission.RECORD_AUDIO); } } @@ -29,9 +31,7 @@ public abstract class PermissionRequestor { if (permissionChecker.canAccessCalendars()) { return true; } - requestPermissions( - new String[] {Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR}, - requestCode); + requestPermissions(requestCode, permission.READ_CALENDAR, permission.WRITE_CALENDAR); return false; } @@ -39,7 +39,7 @@ public abstract class PermissionRequestor { if (permissionChecker.canAccessAccounts()) { return true; } - requestPermission(Manifest.permission.GET_ACCOUNTS, REQUEST_GOOGLE_ACCOUNTS); + requestPermissions(REQUEST_GOOGLE_ACCOUNTS, permission.GET_ACCOUNTS); return false; } @@ -47,13 +47,14 @@ public abstract class PermissionRequestor { if (permissionChecker.canAccessLocation()) { return true; } - requestPermission(Manifest.permission.ACCESS_FINE_LOCATION, REQUEST_LOCATION); + if (atLeastQ()) { + requestPermissions( + REQUEST_LOCATION, permission.ACCESS_FINE_LOCATION, permission.ACCESS_BACKGROUND_LOCATION); + } else { + requestPermissions(REQUEST_LOCATION, permission.ACCESS_FINE_LOCATION); + } return false; } - private void requestPermission(String permission, int rc) { - requestPermissions(new String[] {permission}, rc); - } - - protected abstract void requestPermissions(String[] permissions, int requestCode); + protected abstract void requestPermissions(int requestCode, String... permissions); }