a
554325746@qq.com
2019-12-25 603cb36a5123e46656b06a5deb8d7ac7ff81307f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.obsez.android.lib.filechooser.permissions;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.SparseArray;
import java.util.Random;
public final class PermissionsUtil {
    @SuppressWarnings("unused")
    public static final String TAG = PermissionsUtil.class.getName();
    public interface OnPermissionListener {
        void onPermissionGranted(final String[] permissions);
        void onPermissionDenied(final String[] permissions);
        void onShouldShowRequestPermissionRationale(final String[] permissions);
    }
    public static void checkPermissions(@NonNull Context context,
        @Nullable final OnPermissionListener onPermissionListener, final String... permissions) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || permissions.length == 0) {
            if (onPermissionListener != null) onPermissionListener.onPermissionGranted(permissions);
            return;
        }
        int requestCode = _random.nextInt(1024);
        _permissionListeners.put(requestCode, onPermissionListener);
        Intent intent = new Intent(context, PermissionActivity.class);
        intent.putExtra(PermissionActivity.INTENT_EXTRA_PERMISSIONS, permissions);
        intent.putExtra(PermissionActivity.INTENT_EXTRA_REQUEST_CODE, requestCode);
        context.startActivity(intent);
    }
    private static final SparseArray<OnPermissionListener> _permissionListeners = new SparseArray<>();
    private static final Random _random = new Random();
    static OnPermissionListener getPermissionListener(final int requestCode) {
        OnPermissionListener listener = _permissionListeners.get(requestCode, null);
        _permissionListeners.remove(requestCode);
        return listener;
    }
}