mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 00:59:49 +01:00
Add check and request for SMS read permission to perform export.
This commit is contained in:
@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.permissions;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -16,12 +15,14 @@ import android.view.WindowManager;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.annimon.stream.Stream;
|
||||
import com.annimon.stream.function.Consumer;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
@@ -104,7 +105,11 @@ public class Permissions {
|
||||
}
|
||||
|
||||
public PermissionsBuilder withPermanentDenialDialog(@NonNull String message) {
|
||||
return onAnyPermanentlyDenied(new SettingsDialogListener(permissionObject.getContext(), message));
|
||||
return withPermanentDenialDialog(message, null);
|
||||
}
|
||||
|
||||
public PermissionsBuilder withPermanentDenialDialog(@NonNull String message, @Nullable Runnable onDialogDismissed) {
|
||||
return onAnyPermanentlyDenied(new SettingsDialogListener(permissionObject.getContext(), message, onDialogDismissed));
|
||||
}
|
||||
|
||||
public PermissionsBuilder onAllGranted(Runnable allGrantedListener) {
|
||||
@@ -360,11 +365,13 @@ public class Permissions {
|
||||
private static class SettingsDialogListener implements Runnable {
|
||||
|
||||
private final WeakReference<Context> context;
|
||||
private final Runnable onDialogDismissed;
|
||||
private final String message;
|
||||
|
||||
SettingsDialogListener(Context context, String message) {
|
||||
this.message = message;
|
||||
this.context = new WeakReference<>(context);
|
||||
SettingsDialogListener(Context context, String message, @Nullable Runnable onDialogDismissed) {
|
||||
this.message = message;
|
||||
this.context = new WeakReference<>(context);
|
||||
this.onDialogDismissed = onDialogDismissed;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -372,11 +379,17 @@ public class Permissions {
|
||||
Context context = this.context.get();
|
||||
|
||||
if (context != null) {
|
||||
new AlertDialog.Builder(context)
|
||||
new MaterialAlertDialogBuilder(context)
|
||||
.setTitle(R.string.Permissions_permission_required)
|
||||
.setMessage(message)
|
||||
.setCancelable(false)
|
||||
.setPositiveButton(R.string.Permissions_continue, (dialog, which) -> context.startActivity(getApplicationSettingsIntent(context)))
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.setOnDismissListener(d -> {
|
||||
if (onDialogDismissed != null) {
|
||||
onDialogDismissed.run();
|
||||
}
|
||||
})
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user