Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 93df524a authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Request required runtime permissions

parent 5a15562a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

    <application
            android:name=".TasksApplication"
+31 −0
Original line number Diff line number Diff line
@@ -18,15 +18,22 @@ package org.dmfs.tasks.utils;

import android.Manifest;
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;

import org.dmfs.android.retentionmagic.RetentionMagic;
import org.dmfs.tasks.utils.permission.BasicAppPermissions;
import org.dmfs.tasks.utils.permission.Permission;
import org.dmfs.tasks.utils.permission.dialog.PermissionRequestDialogFragment;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * Base class for all Activities in the app.
@@ -35,6 +42,8 @@ import org.dmfs.tasks.utils.permission.dialog.PermissionRequestDialogFragment;
 */
public abstract class BaseActivity extends AppCompatActivity
{
    private static final int REQUEST_PERMISSIONS = 2001;

    private SharedPreferences mPrefs;

    private Permission mGetAccountsPermission;
@@ -67,6 +76,7 @@ public abstract class BaseActivity extends AppCompatActivity
    {
        super.onResume();
        requestMissingGetAccountsPermission();
        requestMissingPermissions();
    }


@@ -95,4 +105,25 @@ public abstract class BaseActivity extends AppCompatActivity
        }
    }

    private void requestMissingPermissions() {
        List<String> permissions = new ArrayList<>();
        List<String> allPermissions = Arrays.asList(Manifest.permission.READ_CONTACTS,
                Manifest.permission.POST_NOTIFICATIONS, "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 (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
                permissions.add(permission);
            }
        }

        if (!permissions.isEmpty()) {
            ActivityCompat.requestPermissions(this, permissions.toArray(new String[0]), REQUEST_PERMISSIONS);
        }
    }
}