Fixed loop issue

This commit is contained in:
Kanahia 2023-10-21 03:22:38 +05:30
parent b75193b8ba
commit 98473a15b4

View file

@ -10,15 +10,14 @@ import android.provider.Settings;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.karumi.dexter.Dexter; import com.karumi.dexter.Dexter;
import com.karumi.dexter.MultiplePermissionsReport; import com.karumi.dexter.MultiplePermissionsReport;
import com.karumi.dexter.PermissionToken; import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionRequest; import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.multi.MultiplePermissionsListener; import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.R; import fr.free.nrw.commons.R;
import fr.free.nrw.commons.upload.UploadActivity;
import java.util.List; import java.util.List;
@ -83,14 +82,14 @@ public class PermissionUtils {
* <p> * <p>
* Sample usage: * Sample usage:
* <p> * <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE, * PermissionUtils.checkPermissionsAndPerformAction(activity,
* () -> initiateCameraUpload(activity), R.string.storage_permission_title, * Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity),
* R.string.write_storage_permission_rationale); * R.string.storage_permission_title, R.string.write_storage_permission_rationale);
* <p> * <p>
* If you don't want the permission rationale to be shown then use: * If you don't want the permission rationale to be shown then use:
* <p> * <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE, * PermissionUtils.checkPermissionsAndPerformAction(activity,
* () -> initiateCameraUpload(activity), - 1, -1); * Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity), - 1, -1);
* *
* @param activity activity requesting permissions * @param activity activity requesting permissions
* @param permissions the permissions array being requests * @param permissions the permissions array being requests
@ -113,8 +112,9 @@ public class PermissionUtils {
* <p> * <p>
* Sample usage: * Sample usage:
* <p> * <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE, * PermissionUtils.checkPermissionsAndPerformAction(activity,
* () -> initiateCameraUpload(activity), () -> showMessage(), R.string.storage_permission_title, * Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity), () ->
* showMessage(), R.string.storage_permission_title,
* R.string.write_storage_permission_rationale); * R.string.write_storage_permission_rationale);
* *
* @param activity activity requesting permissions * @param activity activity requesting permissions
@ -141,8 +141,15 @@ public class PermissionUtils {
// permission is denied permanently, we will show user a dialog message. // permission is denied permanently, we will show user a dialog message.
DialogUtil.showAlertDialog(activity, activity.getString(rationaleTitle), DialogUtil.showAlertDialog(activity, activity.getString(rationaleTitle),
activity.getString(rationaleMessage), activity.getString(rationaleMessage),
activity.getString(R.string.navigation_item_settings), null, activity.getString(R.string.navigation_item_settings),
() -> askUserToManuallyEnablePermissionFromSettings(activity), null); null,
() -> {
askUserToManuallyEnablePermissionFromSettings(activity);
if (activity instanceof UploadActivity) {
((UploadActivity) activity).hasAllPermissions = true;
}
}, null, null,
!(activity instanceof UploadActivity));
} else { } else {
if (null != onPermissionDenied) { if (null != onPermissionDenied) {
onPermissionDenied.run(); onPermissionDenied.run();
@ -161,8 +168,25 @@ public class PermissionUtils {
activity.getString(rationaleMessage), activity.getString(rationaleMessage),
activity.getString(android.R.string.ok), activity.getString(android.R.string.ok),
activity.getString(android.R.string.cancel), activity.getString(android.R.string.cancel),
token::continuePermissionRequest, () -> {
token::cancelPermissionRequest,
if (activity instanceof UploadActivity) {
((UploadActivity) activity).hasAllPermissions = true;
}
token.continuePermissionRequest();
}
,
() -> {
Toast.makeText(activity.getApplicationContext(),
R.string.permissions_are_required_for_functionality,
Toast.LENGTH_LONG)
.show();
token.cancelPermissionRequest();
if (activity instanceof UploadActivity) {
activity.finish();
}
}
,
null, null,
false); false);
} }