|
|
@ -8,20 +8,20 @@ import android.content.pm.PackageManager;
|
|
|
|
import android.net.Uri;
|
|
|
|
import android.net.Uri;
|
|
|
|
import android.os.Build;
|
|
|
|
import android.os.Build;
|
|
|
|
import android.provider.Settings;
|
|
|
|
import android.provider.Settings;
|
|
|
|
import androidx.annotation.DrawableRes;
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
|
|
|
|
import androidx.core.app.ActivityCompat;
|
|
|
|
|
|
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
|
|
|
|
import androidx.core.content.ContextCompat;
|
|
|
|
|
|
|
|
import android.util.DisplayMetrics;
|
|
|
|
import android.util.DisplayMetrics;
|
|
|
|
import android.view.Display;
|
|
|
|
import android.view.Display;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.view.WindowManager;
|
|
|
|
import android.view.WindowManager;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import androidx.annotation.DrawableRes;
|
|
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
|
|
|
|
import androidx.core.app.ActivityCompat;
|
|
|
|
|
|
|
|
import androidx.core.content.ContextCompat;
|
|
|
|
|
|
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
|
|
|
|
|
|
|
|
import com.annimon.stream.Stream;
|
|
|
|
import com.annimon.stream.Stream;
|
|
|
|
import com.annimon.stream.function.Consumer;
|
|
|
|
import com.annimon.stream.function.Consumer;
|
|
|
|
|
|
|
|
|
|
|
|
import network.loki.messenger.R;
|
|
|
|
|
|
|
|
import org.thoughtcrime.securesms.util.LRUCache;
|
|
|
|
import org.thoughtcrime.securesms.util.LRUCache;
|
|
|
|
import org.thoughtcrime.securesms.util.ServiceUtil;
|
|
|
|
import org.thoughtcrime.securesms.util.ServiceUtil;
|
|
|
|
|
|
|
|
|
|
|
@ -31,6 +31,8 @@ import java.util.Arrays;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import network.loki.messenger.R;
|
|
|
|
|
|
|
|
|
|
|
|
public class Permissions {
|
|
|
|
public class Permissions {
|
|
|
|
|
|
|
|
|
|
|
|
private static final Map<Integer, PermissionsRequest> OUTSTANDING = new LRUCache<>(2);
|
|
|
|
private static final Map<Integer, PermissionsRequest> OUTSTANDING = new LRUCache<>(2);
|
|
|
@ -140,9 +142,9 @@ public class Permissions {
|
|
|
|
PermissionsRequest request = new PermissionsRequest(allGrantedListener, anyDeniedListener, anyPermanentlyDeniedListener, anyResultListener,
|
|
|
|
PermissionsRequest request = new PermissionsRequest(allGrantedListener, anyDeniedListener, anyPermanentlyDeniedListener, anyResultListener,
|
|
|
|
someGrantedListener, someDeniedListener, somePermanentlyDeniedListener);
|
|
|
|
someGrantedListener, someDeniedListener, somePermanentlyDeniedListener);
|
|
|
|
|
|
|
|
|
|
|
|
boolean targetSdk = Build.VERSION.SDK_INT >= minSdkVersion && Build.VERSION.SDK_INT <= maxSdkVersion;
|
|
|
|
boolean isInTargetSDKRange = (Build.VERSION.SDK_INT >= minSdkVersion && Build.VERSION.SDK_INT <= maxSdkVersion);
|
|
|
|
|
|
|
|
|
|
|
|
if (!targetSdk || permissionObject.hasAll(requestedPermissions)) {
|
|
|
|
if (!isInTargetSDKRange || permissionObject.hasAll(requestedPermissions)) {
|
|
|
|
executePreGrantedPermissionsRequest(request);
|
|
|
|
executePreGrantedPermissionsRequest(request);
|
|
|
|
} else if (rationaleDialogMessage != null && rationalDialogHeader != null) {
|
|
|
|
} else if (rationaleDialogMessage != null && rationalDialogHeader != null) {
|
|
|
|
executePermissionsRequestWithRationale(request);
|
|
|
|
executePermissionsRequestWithRationale(request);
|
|
|
|