Skip to content

Commit 7913cd0

Browse files
committed
Merge branch 'master' into develop
2 parents c8e8c77 + 80e96ac commit 7913cd0

File tree

7 files changed

+167
-50
lines changed

7 files changed

+167
-50
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sample/src/main/java/cn/f_ms/permissiondemo/MainActivity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ private void requestPermissionWithBase(final String requestSuccessStr) {
117117
SimpleRuntimePermissionHelper.with(simplePermission)
118118
.permission(Manifest.permission.READ_CONTACTS, Manifest.permission.CALL_PHONE)
119119
.showPermissionRationaleListener(new MyShowRequestPermissionRationaleListener(mActivity))
120-
.resultListener(new SimpleRuntimePermission.PermissionListener() {
120+
.execute(new SimpleRuntimePermission.PermissionListener() {
121121
@Override
122122
public void onAllPermissionGranted() {
123123
Toast.makeText(mActivity, requestSuccessStr, Toast.LENGTH_SHORT).show();
@@ -137,8 +137,7 @@ public void onPermissionRefuse(PermissionRefuseResultHelper resultHelper) {
137137
.show();
138138
}
139139

140-
})
141-
.execute();
140+
});
142141
}
143142

144143
private static class MyShowRequestPermissionRationaleListener implements ShowRequestPermissionRationaleListener {

simple-runtime-permission-rxjava1/src/main/java/cn/f_ms/runtimepermission/simple/rxjava1/RxSimpleRuntimePermissionTransform.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package cn.f_ms.runtimepermission.simple.rxjava1;
22

3-
import cn.f_ms.runtimepermission.simple.Permission;
43
import cn.f_ms.runtimepermission.simple.PermissionRefuseResultHelper;
54
import cn.f_ms.runtimepermission.simple.ShowRequestPermissionRationaleListener;
65
import cn.f_ms.runtimepermission.simple.SimpleRuntimePermission;
@@ -36,7 +35,7 @@ public void call(final Subscriber<? super T> subscriber) {
3635
SimpleRuntimePermissionHelper.with(simpleRuntimePermission)
3736
.permission(permissions)
3837
.showPermissionRationaleListener(showRequestPermissionRationaleListener)
39-
.resultListener(new SimpleRuntimePermission.PermissionListener() {
38+
.execute(new SimpleRuntimePermission.PermissionListener() {
4039
@Override
4140
public void onAllPermissionGranted() {
4241
subscriber.onNext(t);
@@ -49,8 +48,7 @@ public void onPermissionRefuse(PermissionRefuseResultHelper resultHelper) {
4948
new PermissionException(resultHelper)
5049
);
5150
}
52-
})
53-
.execute();
51+
});
5452
}
5553
});
5654
}

simple-runtime-permission-rxjava2/src/main/java/cn/f_ms/runtimepermission/simple/rxjava2/RxSimpleRuntimePermissionTransform.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package cn.f_ms.runtimepermission.simple.rxjava2;
22

3-
import cn.f_ms.runtimepermission.simple.Permission;
43
import cn.f_ms.runtimepermission.simple.PermissionRefuseResultHelper;
54
import cn.f_ms.runtimepermission.simple.ShowRequestPermissionRationaleListener;
65
import cn.f_ms.runtimepermission.simple.SimpleRuntimePermission;
@@ -37,7 +36,7 @@ public void subscribe(@NonNull final ObservableEmitter<T> e) throws Exception {
3736
SimpleRuntimePermissionHelper.with(simpleRuntimePermission)
3837
.permission(permissions)
3938
.showPermissionRationaleListener(showRequestPermissionRationaleListener)
40-
.resultListener(new SimpleRuntimePermission.PermissionListener() {
39+
.execute(new SimpleRuntimePermission.PermissionListener() {
4140
@Override
4241
public void onAllPermissionGranted() {
4342
e.onNext(t);
@@ -50,8 +49,7 @@ public void onPermissionRefuse(PermissionRefuseResultHelper resultHelper) {
5049
new PermissionException(resultHelper)
5150
);
5251
}
53-
})
54-
.execute();
52+
});
5553
}
5654
});
5755
}
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package cn.f_ms.runtimepermission.simple;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
/**
7+
* Permission Request Result Wrapper Helper
8+
*
9+
* @author _Ms
10+
* @time 2017/5/26
11+
*/
12+
public final class PermissionResultHelper {
13+
14+
private final List<Permission> mPermissions;
15+
16+
public PermissionResultHelper(List<Permission> permissions) {
17+
if (permissions == null) {
18+
throw new NullPointerException();
19+
}
20+
21+
mPermissions = permissions;
22+
}
23+
24+
/**
25+
* get all permission result
26+
*/
27+
public List<Permission> getPermissions() {
28+
return new ArrayList<>(mPermissions);
29+
}
30+
31+
/**
32+
* get all of grant permission result
33+
*/
34+
public List<Permission> getGrantPermissions() {
35+
36+
ArrayList<Permission> grantPermissions = new ArrayList<>();
37+
38+
for (Permission permission : mPermissions) {
39+
if (permission.isGranted) {
40+
grantPermissions.add(permission);
41+
}
42+
}
43+
return grantPermissions;
44+
}
45+
46+
/**
47+
* get all of refuse permission result
48+
*/
49+
public List<Permission> getRefusePermissions() {
50+
ArrayList<Permission> refusePermissions = new ArrayList<>();
51+
52+
for (Permission permission : mPermissions) {
53+
if (!permission.isGranted) {
54+
refusePermissions.add(permission);
55+
}
56+
}
57+
return refusePermissions;
58+
}
59+
60+
/**
61+
* get all of never ask again permission result
62+
*/
63+
public List<Permission> getNeverAskAgainPermissions() {
64+
ArrayList<Permission> neverAskAgainPerimssions = new ArrayList<>();
65+
66+
for (Permission permission : mPermissions) {
67+
if (!permission.isGranted
68+
&& !permission.isShouldShowRequestPermissionRationale) {
69+
neverAskAgainPerimssions.add(permission);
70+
}
71+
}
72+
return neverAskAgainPerimssions;
73+
}
74+
75+
/**
76+
* get all of should show request permission rationale permissions
77+
*/
78+
public List<Permission> getShouldShowRequestPermissionRationalePermissions() {
79+
80+
ArrayList<Permission> shouldShowRequestPermissionRationalePermissions = new ArrayList<>();
81+
82+
for (Permission permission : mPermissions) {
83+
if (!permission.isGranted
84+
&& permission.isShouldShowRequestPermissionRationale) {
85+
shouldShowRequestPermissionRationalePermissions.add(permission);
86+
}
87+
}
88+
return shouldShowRequestPermissionRationalePermissions;
89+
}
90+
91+
public boolean isExistRefust() { return !isAllGrant(); }
92+
93+
public boolean isExistShouldShowRequestPermissionRationale() {
94+
for (Permission permission : mPermissions) {
95+
if (!permission.isGranted
96+
&& permission.isShouldShowRequestPermissionRationale) {
97+
return true;
98+
}
99+
}
100+
return false;
101+
}
102+
103+
public boolean isExistNeverAskAgain() {
104+
for (Permission permission : mPermissions) {
105+
if (!permission.isGranted
106+
&& !permission.isShouldShowRequestPermissionRationale) {
107+
return true;
108+
}
109+
}
110+
return false;
111+
}
112+
113+
public boolean isAllGrant() {
114+
for (Permission permission : mPermissions) {
115+
if (!permission.isGranted) {
116+
return false;
117+
}
118+
}
119+
return true;
120+
}
121+
122+
public boolean isAllRefuse() {
123+
for (Permission permission : mPermissions) {
124+
if (permission.isGranted) {
125+
return false;
126+
}
127+
}
128+
return true;
129+
}
130+
}
Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package cn.f_ms.runtimepermission.simple;
22

3-
import static android.R.id.empty;
4-
53
/**
64
* SimpleRuntimePermissionHelper
75
*
@@ -13,63 +11,52 @@ public class SimpleRuntimePermissionHelper {
1311

1412
public static class PermissionRequest {
1513

16-
interface OnExecuteListener {
17-
void onExecute(PermissionRequest permissionRequest);
18-
}
19-
20-
private OnExecuteListener mOnExecuteListener;
21-
private String[] permissions;
22-
private SimpleRuntimePermission.PermissionListener resultListener;
23-
private ShowRequestPermissionRationaleListener showRequestPermissionRationaleListener;
14+
private SimpleRuntimePermission mSimpleRuntimePermission;
15+
private String[] mPermissions;
16+
private ShowRequestPermissionRationaleListener mShowRequestPermissionRationaleListener;
2417

25-
PermissionRequest(OnExecuteListener listener) {
26-
if (listener == null) {
27-
throw new IllegalArgumentException("OnExecuteListener can't be empty");
18+
PermissionRequest(SimpleRuntimePermission simpleRuntimePermission) {
19+
if (simpleRuntimePermission == null) {
20+
throw new IllegalArgumentException("simpleRuntimePermission can't be null");
2821
}
29-
mOnExecuteListener = listener;
30-
}
3122

32-
public PermissionRequest permission(String... permissions) {
33-
this.permissions = permissions;
34-
return this;
23+
mSimpleRuntimePermission = simpleRuntimePermission;
3524
}
3625

37-
public PermissionRequest resultListener(SimpleRuntimePermission.PermissionListener permissionListener) {
38-
resultListener = permissionListener;
26+
public PermissionRequest permission(String... permissions) {
27+
this.mPermissions = permissions;
3928
return this;
4029
}
4130

4231
public PermissionRequest showPermissionRationaleListener(ShowRequestPermissionRationaleListener showRequestPermissionRationaleListener) {
43-
this.showRequestPermissionRationaleListener = showRequestPermissionRationaleListener;
32+
this.mShowRequestPermissionRationaleListener = showRequestPermissionRationaleListener;
4433
return this;
4534
}
4635

47-
String[] permissions() { return permissions; }
36+
public void execute(SimpleRuntimePermission.PermissionListener resultListener) {
4837

49-
SimpleRuntimePermission.PermissionListener resultListener() { return resultListener; }
38+
if (resultListener == null) {
39+
throw new IllegalArgumentException("resultListener can't be null");
40+
}
5041

51-
ShowRequestPermissionRationaleListener showPermissionRationaleListener() { return showRequestPermissionRationaleListener; }
42+
if (mPermissions == null
43+
|| mPermissions.length == 0) {
44+
throw new IllegalArgumentException("Permission can't be empty/null, please set permission");
45+
}
5246

53-
public void execute() {
54-
mOnExecuteListener.onExecute(this);
47+
mSimpleRuntimePermission.request(
48+
resultListener,
49+
this.mShowRequestPermissionRationaleListener,
50+
this.mPermissions
51+
);
5552
}
5653
}
5754

5855
public static PermissionRequest with(final SimpleRuntimePermission simpleRuntimePermission) {
5956
if (simpleRuntimePermission == null) {
60-
throw new IllegalArgumentException("SimpleRuntimePermission argement can't be empty");
57+
throw new IllegalArgumentException("SimpleRuntimePermission argement can't be null");
6158
}
6259

63-
return new PermissionRequest(new PermissionRequest.OnExecuteListener() {
64-
@Override
65-
public void onExecute(PermissionRequest request) {
66-
67-
simpleRuntimePermission.request(
68-
request.resultListener(),
69-
request.showPermissionRationaleListener(),
70-
request.permissions()
71-
);
72-
}
73-
});
60+
return new PermissionRequest(simpleRuntimePermission);
7461
}
7562
}

0 commit comments

Comments
 (0)