mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 04:43:54 +01:00
Fixed loop issue
This commit is contained in:
parent
b75193b8ba
commit
98473a15b4
1 changed files with 37 additions and 13 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue