diff --git a/opentasks/src/main/AndroidManifest.xml b/opentasks/src/main/AndroidManifest.xml
index b865ac79ec3b2cb620a41bddb5b2b81b956ea513..bb083972f2de1bad5b726a32d2a59b9be0cdcd0a 100644
--- a/opentasks/src/main/AndroidManifest.xml
+++ b/opentasks/src/main/AndroidManifest.xml
@@ -10,7 +10,6 @@
-
diff --git a/opentasks/src/main/java/org/dmfs/tasks/utils/BaseActivity.java b/opentasks/src/main/java/org/dmfs/tasks/utils/BaseActivity.java
index 5550275e85d47a602655a307b4b0f982d1b5c4f9..f7a2e1fbd4c5c8babf12ec75d588600630137922 100644
--- a/opentasks/src/main/java/org/dmfs/tasks/utils/BaseActivity.java
+++ b/opentasks/src/main/java/org/dmfs/tasks/utils/BaseActivity.java
@@ -22,6 +22,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
+
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
@@ -49,6 +50,8 @@ public abstract class BaseActivity extends AppCompatActivity {
private Permission mGetAccountsPermission;
+ private boolean mRuntimePermissionRequestActive = false;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -101,23 +104,26 @@ public abstract class BaseActivity extends AppCompatActivity {
}
private void requestMissingPermissions() {
+ if (mRuntimePermissionRequestActive) {
+ return;
+ }
+
List permissions = new ArrayList<>();
- List allPermissions = Arrays.asList(Manifest.permission.READ_CONTACTS,
- Manifest.permission.POST_NOTIFICATIONS, "foundation.e.permission.READ_TASKS",
- "foundation.e.permission.WRITE_TASKS");
+ List allPermissions = new ArrayList<>(
+ Arrays.asList("foundation.e.permission.READ_TASKS", "foundation.e.permission.WRITE_TASKS"));
- for (String permission : allPermissions) {
- if (permission.equals(Manifest.permission.POST_NOTIFICATIONS)
- && Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
- continue;
- }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ allPermissions.add(Manifest.permission.POST_NOTIFICATIONS);
+ }
+ for (String permission : allPermissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
permissions.add(permission);
}
}
if (!permissions.isEmpty()) {
+ mRuntimePermissionRequestActive = true;
ActivityCompat.requestPermissions(this, permissions.toArray(new String[0]), REQUEST_PERMISSIONS);
}
}
diff --git a/opentasks/src/main/play/listings/en-GB/full-description.txt b/opentasks/src/main/play/listings/en-GB/full-description.txt
index 54a0d57b2e0f092564275071c862ca2386fd6b5d..e53a4058faa0d55f701571fcac79333ef63ee59c 100644
--- a/opentasks/src/main/play/listings/en-GB/full-description.txt
+++ b/opentasks/src/main/play/listings/en-GB/full-description.txt
@@ -20,6 +20,3 @@ To report bugs, please use this bug tracker: https://github.com/dmfs/tasks/issue
* many more
Please don't rate missing features, but only features the app already has. The app is still under development and lots of fancy stuff is still to come.
-
-Permissions
-At present the app doesn't use the "read contacts" permission. This permission has been added in advance for future releases. It's planned to support adding attendees to tasks and to provide auto-completion for the contacts.