@@ -18,22 +18,27 @@ class RationaleDialogClickListener implements Dialog.OnClickListener {
18
18
private Object mHost ;
19
19
private RationaleDialogConfig mConfig ;
20
20
private EasyPermissions .PermissionCallbacks mCallbacks ;
21
+ private EasyPermissions .RationaleCallbacks mRationaleCallbacks ;
21
22
22
23
RationaleDialogClickListener (RationaleDialogFragmentCompat compatDialogFragment ,
23
24
RationaleDialogConfig config ,
24
- EasyPermissions .PermissionCallbacks callbacks ) {
25
+ EasyPermissions .PermissionCallbacks callbacks ,
26
+ EasyPermissions .RationaleCallbacks rationaleCallbacks ) {
25
27
26
28
mHost = compatDialogFragment .getParentFragment () != null
27
29
? compatDialogFragment .getParentFragment ()
28
30
: compatDialogFragment .getActivity ();
29
31
30
32
mConfig = config ;
31
33
mCallbacks = callbacks ;
34
+ mRationaleCallbacks = rationaleCallbacks ;
35
+
32
36
}
33
37
34
38
RationaleDialogClickListener (RationaleDialogFragment dialogFragment ,
35
39
RationaleDialogConfig config ,
36
- EasyPermissions .PermissionCallbacks callbacks ) {
40
+ EasyPermissions .PermissionCallbacks callbacks ,
41
+ EasyPermissions .RationaleCallbacks dialogCallback ) {
37
42
38
43
if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .JELLY_BEAN_MR1 ) {
39
44
mHost = dialogFragment .getParentFragment () != null ?
@@ -45,32 +50,37 @@ class RationaleDialogClickListener implements Dialog.OnClickListener {
45
50
46
51
mConfig = config ;
47
52
mCallbacks = callbacks ;
53
+ mRationaleCallbacks = dialogCallback ;
48
54
}
49
55
50
56
@ Override
51
57
public void onClick (DialogInterface dialog , int which ) {
58
+ int requestCode = mConfig .requestCode ;
52
59
if (which == Dialog .BUTTON_POSITIVE ) {
60
+ String [] permissions = mConfig .permissions ;
61
+ if (mRationaleCallbacks != null ) {
62
+ mRationaleCallbacks .onRationaleAccepted (requestCode );
63
+ }
53
64
if (mHost instanceof Fragment ) {
54
- PermissionHelper .newInstance ((Fragment ) mHost ).directRequestPermissions (
55
- mConfig .requestCode , mConfig .permissions );
65
+ PermissionHelper .newInstance ((Fragment ) mHost ).directRequestPermissions (requestCode , permissions );
56
66
} else if (mHost instanceof android .app .Fragment ) {
57
- PermissionHelper .newInstance ((android .app .Fragment ) mHost ).directRequestPermissions (
58
- mConfig .requestCode , mConfig .permissions );
67
+ PermissionHelper .newInstance ((android .app .Fragment ) mHost ).directRequestPermissions (requestCode , permissions );
59
68
} else if (mHost instanceof Activity ) {
60
- PermissionHelper .newInstance ((Activity ) mHost ).directRequestPermissions (
61
- mConfig .requestCode , mConfig .permissions );
69
+ PermissionHelper .newInstance ((Activity ) mHost ).directRequestPermissions (requestCode , permissions );
62
70
} else {
63
71
throw new RuntimeException ("Host must be an Activity or Fragment!" );
64
72
}
65
73
} else {
74
+ if (mRationaleCallbacks != null ) {
75
+ mRationaleCallbacks .onRationaleDenied (requestCode );
76
+ }
66
77
notifyPermissionDenied ();
67
78
}
68
79
}
69
80
70
81
private void notifyPermissionDenied () {
71
82
if (mCallbacks != null ) {
72
- mCallbacks .onPermissionsDenied (mConfig .requestCode ,
73
- Arrays .asList (mConfig .permissions ));
83
+ mCallbacks .onPermissionsDenied (mConfig .requestCode , Arrays .asList (mConfig .permissions ));
74
84
}
75
85
}
76
86
}
0 commit comments