23
23
import android .support .annotation .NonNull ;
24
24
import android .support .annotation .StringRes ;
25
25
import android .support .v4 .app .ActivityCompat ;
26
+ import android .support .v4 .app .Fragment ;
26
27
import android .support .v4 .content .ContextCompat ;
27
28
import android .util .Log ;
28
29
@@ -87,28 +88,44 @@ public static boolean hasPermissions(Context context, @NonNull String... perms)
87
88
}
88
89
89
90
/**
90
- * Request a set of permissions, showing a rationale if the system requests it.
91
- *
92
- * @see #requestPermissions(Object, String, int, int, int, String...)
91
+ * Request permissions from an Activity with standard OK/Cancel buttons.
92
+ * @see #requestPermissions(Activity, String, int, int, int, String...)
93
93
*/
94
- public static void requestPermissions (@ NonNull Object host ,
95
- @ NonNull String rationale ,
96
- int requestCode ,
97
- @ NonNull String ... perms ) {
98
-
99
- // Use default Android 'OK' and 'Cancel' buttons
100
- requestPermissions (host ,
101
- rationale ,
102
- android .R .string .ok ,
103
- android .R .string .cancel ,
104
- requestCode ,
105
- perms );
94
+ public static void requestPermissions (
95
+ @ NonNull Activity host , @ NonNull String rationale ,
96
+ int requestCode , @ NonNull String ... perms ) {
97
+ requestPermissions (host , rationale , android .R .string .ok , android .R .string .cancel ,
98
+ requestCode , perms );
99
+ }
100
+
101
+ /**
102
+ * Request permissions from a Support Fragment with standard OK/Cancel buttons.
103
+ * @see #requestPermissions(Activity, String, int, int, int, String...)
104
+ */
105
+ public static void requestPermissions (
106
+ @ NonNull Fragment host , @ NonNull String rationale ,
107
+ int requestCode , @ NonNull String ... perms ) {
108
+
109
+ requestPermissions (host , rationale , android .R .string .ok , android .R .string .cancel ,
110
+ requestCode , perms );
111
+ }
112
+
113
+ /**
114
+ * Request permissions from a standard Fragment with standard OK/Cancel buttons.
115
+ * @see #requestPermissions(Activity, String, int, int, int, String...)
116
+ */
117
+ public static void requestPermissions (
118
+ @ NonNull android .app .Fragment host , @ NonNull String rationale ,
119
+ int requestCode , @ NonNull String ... perms ) {
120
+
121
+ requestPermissions (host , rationale , android .R .string .ok , android .R .string .cancel ,
122
+ requestCode , perms );
106
123
}
107
124
108
125
/**
109
126
* Request a set of permissions, showing rationale if the system requests it.
110
127
*
111
- * @param host {@link Object} requesting permissions .
128
+ * @param host requesting context .
112
129
* @param rationale a message explaining why the application needs this set of permissions,
113
130
* will be displayed if the user rejects the request the first time.
114
131
* @param positiveButton custom text for positive button
@@ -117,19 +134,48 @@ public static void requestPermissions(@NonNull Object host,
117
134
* @param perms a set of permissions to be requested.
118
135
* @see Manifest.permission
119
136
*/
120
- public static void requestPermissions (@ NonNull Object host ,
121
- @ NonNull String rationale ,
122
- @ StringRes int positiveButton ,
123
- @ StringRes int negativeButton ,
124
- int requestCode ,
125
- @ NonNull String ... perms ) {
137
+ public static void requestPermissions (
138
+ @ NonNull Activity host , @ NonNull String rationale ,
139
+ @ StringRes int positiveButton , @ StringRes int negativeButton ,
140
+ int requestCode , @ NonNull String ... perms ) {
141
+ requestPermissions (PermissionHelper .newInstance (host ), rationale ,
142
+ positiveButton , negativeButton ,
143
+ requestCode , perms );
144
+ }
126
145
127
- // Get a permission helper for the calling object
128
- PermissionHelper helper = PermissionHelper .getInstance (host );
146
+ /**
147
+ * Request permissions from a Support Fragment.
148
+ * @see #requestPermissions(Activity, String, int, int, int, String...)
149
+ */
150
+ public static void requestPermissions (
151
+ @ NonNull Fragment host , @ NonNull String rationale ,
152
+ @ StringRes int positiveButton , @ StringRes int negativeButton ,
153
+ int requestCode , @ NonNull String ... perms ) {
154
+ requestPermissions (PermissionHelper .newInstance (host ), rationale ,
155
+ positiveButton , negativeButton ,
156
+ requestCode , perms );
157
+ }
158
+
159
+ /**
160
+ * @see #requestPermissions(Activity, String, int, int, int, String...)
161
+ */
162
+ public static void requestPermissions (
163
+ @ NonNull android .app .Fragment host , @ NonNull String rationale ,
164
+ @ StringRes int positiveButton , @ StringRes int negativeButton ,
165
+ int requestCode , @ NonNull String ... perms ) {
166
+ requestPermissions (PermissionHelper .newInstance (host ), rationale ,
167
+ positiveButton , negativeButton ,
168
+ requestCode , perms );
169
+ }
170
+
171
+ private static void requestPermissions (
172
+ @ NonNull PermissionHelper helper , @ NonNull String rationale ,
173
+ @ StringRes int positiveButton , @ StringRes int negativeButton ,
174
+ int requestCode , @ NonNull String ... perms ) {
129
175
130
176
// Check for permissions before dispatching the request
131
177
if (hasPermissions (helper .getContext (), perms )) {
132
- notifyAlreadyHasPermissions (host , requestCode , perms );
178
+ notifyAlreadyHasPermissions (helper . getHost () , requestCode , perms );
133
179
return ;
134
180
}
135
181
@@ -196,47 +242,90 @@ public static void onRequestPermissionsResult(int requestCode,
196
242
* Check if at least one permission in the list of denied permissions has been permanently
197
243
* denied (user clicked "Never ask again").
198
244
*
199
- * @param host {@link Object} requesting permissions.
245
+ * @param host context requesting permissions.
200
246
* @param deniedPermissions list of denied permissions, usually from {@link
201
247
* PermissionCallbacks#onPermissionsDenied(int, List)}
202
248
* @return {@code true} if at least one permission in the list was permanently denied.
203
249
*/
204
- public static boolean somePermissionPermanentlyDenied (@ NonNull Object host ,
250
+ public static boolean somePermissionPermanentlyDenied (@ NonNull Activity host ,
205
251
@ NonNull List <String > deniedPermissions ) {
206
- return PermissionHelper .getInstance (host )
252
+ return PermissionHelper .newInstance (host )
253
+ .somePermissionPermanentlyDenied (deniedPermissions );
254
+ }
255
+
256
+ /**
257
+ * @see #somePermissionPermanentlyDenied(Activity, List).
258
+ */
259
+ public static boolean somePermissionPermanentlyDenied (@ NonNull Fragment host ,
260
+ @ NonNull List <String > deniedPermissions ) {
261
+ return PermissionHelper .newInstance (host )
262
+ .somePermissionPermanentlyDenied (deniedPermissions );
263
+ }
264
+
265
+ /**
266
+ * @see #somePermissionPermanentlyDenied(Activity, List).
267
+ */
268
+ public static boolean somePermissionPermanentlyDenied (@ NonNull android .app .Fragment host ,
269
+ @ NonNull List <String > deniedPermissions ) {
270
+ return PermissionHelper .newInstance (host )
207
271
.somePermissionPermanentlyDenied (deniedPermissions );
208
272
}
209
273
210
274
/**
211
275
* Check if a permission has been permanently denied (user clicked "Never ask again").
212
276
*
213
- * @param host {@link Object} requesting permissions.
277
+ * @param host context requesting permissions.
214
278
* @param deniedPermission denied permission.
215
279
* @return {@code true} if the permissions has been permanently denied.
216
280
*/
217
- public static boolean permissionPermanentlyDenied (@ NonNull Object host ,
281
+ public static boolean permissionPermanentlyDenied (@ NonNull Activity host ,
218
282
@ NonNull String deniedPermission ) {
219
- return PermissionHelper .getInstance (host )
220
- .permissionPermanentlyDenied (deniedPermission );
283
+ return PermissionHelper .newInstance (host ).permissionPermanentlyDenied (deniedPermission );
221
284
}
222
285
223
286
/**
224
- * @param object Activity or Fragment
225
- * @return true if the user has previously denied any of the {@code perms} and we should show a
226
- * rationale, false otherwise.
287
+ * @see #permissionPermanentlyDenied(Activity, String).
288
+ */
289
+ public static boolean permissionPermanentlyDenied (@ NonNull Fragment host ,
290
+ @ NonNull String deniedPermission ) {
291
+ return PermissionHelper .newInstance (host ).permissionPermanentlyDenied (deniedPermission );
292
+ }
293
+
294
+ /**
295
+ * @see #permissionPermanentlyDenied(Activity, String).
227
296
*/
228
- private static boolean shouldShowRationale (@ NonNull Object object , @ NonNull String [] perms ) {
229
- return PermissionHelper .getInstance (object ).shouldShowRationale (perms );
297
+ public static boolean permissionPermanentlyDenied (@ NonNull android .app .Fragment host ,
298
+ @ NonNull String deniedPermission ) {
299
+ return PermissionHelper .newInstance (host ).permissionPermanentlyDenied (deniedPermission );
230
300
}
231
301
232
302
/**
233
- * @param host {@link Object} requesting permissions.
234
- * @param perms Array of permissions
303
+ * See if some denied permission has been permanently denied.
304
+ *
305
+ * @param host requesting context.
306
+ * @param perms array of permissions.
235
307
* @return true if the user has previously denied any of the {@code perms} and we should show a
236
308
* rationale, false otherwise.
237
309
*/
238
- public static boolean somePermissionDenied (@ NonNull Object host , @ NonNull String [] perms ) {
239
- return PermissionHelper .getInstance (host ).somePermissionDenied (perms );
310
+ public static boolean somePermissionDenied (@ NonNull Activity host ,
311
+ @ NonNull String [] perms ) {
312
+ return PermissionHelper .newInstance (host ).somePermissionDenied (perms );
313
+ }
314
+
315
+ /**
316
+ * @see #somePermissionDenied(Activity, String[])
317
+ */
318
+ public static boolean somePermissionDenied (@ NonNull Fragment host ,
319
+ @ NonNull String [] perms ) {
320
+ return PermissionHelper .newInstance (host ).somePermissionDenied (perms );
321
+ }
322
+
323
+ /**
324
+ * @see #somePermissionDenied(Activity, String[])
325
+ */
326
+ public static boolean somePermissionDenied (@ NonNull android .app .Fragment host ,
327
+ @ NonNull String [] perms ) {
328
+ return PermissionHelper .newInstance (host ).somePermissionDenied (perms );
240
329
}
241
330
242
331
/**
0 commit comments