@@ -44,7 +44,7 @@ Android API_LEVEL >= 11
4444 */
4545 compile 'com.github.imfms.simple-runtime-permission:simple-runtime-permission-rxjava2:${latest.version}'
4646 }
47-
47+
4848## How to use
4949
5050
@@ -74,107 +74,106 @@ callback mode response request
7474 ShowRequestPermissionRationaleListener showRequestPermissionRationaleListener,
7575 String... permissions
7676 )
77-
77+
7878 - String... Permission string array, accept mulit args, recommend select from Manifest.permission.*
7979 - PermissionListener Permission request callback listener
80-
80+
8181 // When all of request permissions were granted
8282 void onAllPermissionGranted()
8383
8484 // When any permissions were refused
8585 void onPermissionRefuse(PermissionRefuseResultHelper resultHelper)
86-
87- - [ Optional] ShowRequestPermissionRationaleListener ShowRequestPermissionRationale callback listener, can refer official document [ Requesting Permissions at Run Time#Explain why the app needs permissions] ( https://developer.android.com/training/permissions/requesting.html#explain )
88-
89- // When need show request permission rationale tip
90- void onShowRequestPermissionRationale(
91- ShowRequestPermissionRationaleControler controler,
92- String[ ] permissions
93- )
94-
95- /*
96- When request permission rationale refuse
97- when ShowRequestPermissionRationaleControler.doCancel() invoke
98- * /
99- void onRequestPermissionRationaleRefuse(
100- String[ ] permissions
101- )
102-
103-
86+
87+ - [ Optional] ShowRequestPermissionRationaleListener ShowRequestPermissionRationale callback listener, can refer official document [ Requesting Permissions at Run Time#Explain why the app needs permissions] ( https://developer.android.com/training/permissions/requesting.html#explain )
88+
89+ // When need show request permission rationale tip
90+ void onShowRequestPermissionRationale(
91+ ShowRequestPermissionRationaleControler controler,
92+ String[] permissions
93+ )
94+
95+ /*
96+ When request permission rationale refuse
97+ when ShowRequestPermissionRationaleControler.doCancel() invoke
98+ */
99+ void onRequestPermissionRationaleRefuse(
100+ String[] permissions
101+ )
102+
103+
104104 - String[ ] Need show request permission rationale permission string array
105105 - ShowRequestPermissionRationaleControler Controler
106106 - void doContinue() // Do request permission from system (user select agree)
107107 - void doCancel() // Cancel request action (user select refuse)
108-
108+
1091094 . Sample
110110
111111 > Request 'read contacts' & 'call phone' permission, When user has refused this permission(not select never tip) tell user why need this permission
112-
113- ``` java
114- SimpleRuntimePermission simplePermission = new SimpleRuntimePermission (mActivity);
115112
116- simplePermission. request(
117- new SimpleRuntimePermission .PermissionListener () {
118- @Override
119- public void onAllPermissionGranted () {
120- Toast . makeText(mActivity, " Success, geted permission" , Toast . LENGTH_SHORT ). show();
121- }
113+ ``` java
114+ SimpleRuntimePermissionHelper . with(mActivity)
115+ .permission(Manifest . permission. READ_CONTACTS , Manifest . permission. CALL_PHONE )
116+ .showPermissionRationaleListener(new ShowRequestPermissionRationaleListener () {
117+ @Override
118+ public void onShowRequestPermissionRationale (final ShowRequestPermissionRationaleControler controler , String [] permissions ) {
119+ new AlertDialog .Builder (mActivity)
120+ .setTitle(" Tips" )
121+ .setMessage(" Please Give Me Those Permissions" )
122+ .setPositiveButton(" Yes, I Will" , new DialogInterface .OnClickListener () {
123+ @Override
124+ public void onClick (DialogInterface dialog , int which ) {
125+ controler. doContinue();
126+ }
127+ })
128+ .setNegativeButton(" Sorry, I can't" , new DialogInterface .OnClickListener () {
129+ @Override
130+ public void onClick (DialogInterface dialog , int which ) {
131+ controler. doCancel();
132+ }
133+ })
134+ .setCancelable(false )
135+ .create()
136+ .show();
137+ }
122138
123- @Override
124- public void onPermissionRefuse (PermissionRefuseResultHelper resultHelper ) {
125- Toast . makeText(mActivity, " Fail, some permission were refused" , Toast . LENGTH_SHORT ). show();
126- }
139+ @Override
140+ public void onRequestPermissionRationaleRefuse (String [] permissions ) {
141+ Toast . makeText(mActivity, " Well, You refused." , Toast . LENGTH_SHORT ). show();
142+ }
143+ })
144+ .execute(new PermissionListener () {
145+ @Override
146+ public void onAllPermissionGranted () {
147+ Toast . makeText(mActivity, requestSuccessStr, Toast . LENGTH_SHORT ). show();
127148 }
128- , new ShowRequestPermissionRationaleListener () {
129- @Override
130- public void onShowRequestPermissionRationale (final ShowRequestPermissionRationaleControler controler , String [] permissions ) {
131- new AlertDialog .Builder (mActivity)
132- .setTitle(" PermissionRequestTip" )
133- .setMessage(" I need those permissions, please select agree" )
134- .setPositiveButton(" OK" , new DialogInterface .OnClickListener () {
135- @Override
136- public void onClick (DialogInterface dialog , int which ) {
137- controler. doContinue();
138- }
139- })
140- .setNegativeButton(" Refuse" , new DialogInterface .OnClickListener () {
141- @Override
142- public void onClick (DialogInterface dialog , int which ) {
143- controler. doCancel();
144- }
145- })
146- .create()
147- .show();
148- }
149149
150- @Override
151- public void onRequestPermissionRationaleRefuse (String [] permissions ) {
152- Toast . makeText(mActivity, " Fail, user refused request permission tip" , Toast . LENGTH_SHORT ). show();
153- }
150+ @Override
151+ public void onPermissionRefuse (PermissionRefuseResultHelper resultHelper ) {
152+ String str = String . format(" all: %s\n granted: %s\n refuse:%s\n never_ask: %s" ,
153+ resultHelper. getAllPermissions(),
154+ resultHelper. getGrantPermissions(),
155+ resultHelper. getRefusePermissions(),
156+ resultHelper. getNeverAskAgainPermissions()
157+ );
158+
159+ new AlertDialog .Builder (MainActivity . this )
160+ .setMessage(str)
161+ .show();
154162 }
155- , Manifest . permission. CALL_PHONE , Manifest . permission. READ_CONTACTS
156- );
163+ });
157164 ```
158-
159- 5. For easy use, support a helper class ' SimpleRuntimePermissionHelper' , it' s chain mode (refer[yanzhenjie/AndPermission](https://github.com/yanzhenjie/AndPermission))
160- ```java
161- SimpleRuntimePermissionHelper.with(SimpleRuntimePermission)
162- .permission(...)
163- .showPermissionRationaleListener(...)
164- .execute(resultListener...);
165- ```
166-
165+
167166### For RxJava1
168167
1691681. Instance RxSimpleRuntimePermission
170169
171170 RxSimpleRuntimePermission(Activity activity)
172-
171+
1731722. Invoke request permision method
174173 - compose Use RxJava operator ' compose' to compose request permission action, when get refuse result it will wrapper result to PermissionException for subscriber' s onError()
175-
174+
176175 <T> RxSimpleRuntimePermissionTransform<T> compose(ShowRequestPermissionRationaleListener showRequestPermissionRationaleListener, String... permissions)
177-
176+
178177 - request Create observer, developer can subscribe result, when get refuse result it will wrapper result to PermissionException for subscriber' s onError()
179178
180179 Observable<None > request(ShowRequestPermissionRationaleListener showRequestPermissionRationaleListener, String . .. permissions)
@@ -185,11 +184,11 @@ callback mode response request
185184 public final PermissionRefuseResultHelper result;
186185 }
187186 ```
188-
187+
1891883. Sample
190189
191190 > Request ' read contacts' & ' call phone' permission, When user has refused this permission(not select never tip) tell user why need this permission
192-
191+
193192 ```java
194193 RxSimpleRuntimePermission rxSimpleRuntimePermission = new RxSimpleRuntimePermission (mActivity);
195194
@@ -245,7 +244,7 @@ callback mode response request
245244 }
246245 });
247246 ```
248-
247+
249248
250249### For RxJava2
251250
0 commit comments