2323import android .support .annotation .NonNull ;
2424import android .support .annotation .StringRes ;
2525import android .support .v4 .app .ActivityCompat ;
26+ import android .support .v4 .app .Fragment ;
2627import android .support .v4 .content .ContextCompat ;
2728import android .util .Log ;
2829
@@ -87,28 +88,44 @@ public static boolean hasPermissions(Context context, @NonNull String... perms)
8788 }
8889
8990 /**
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...)
9393 */
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 );
106123 }
107124
108125 /**
109126 * Request a set of permissions, showing rationale if the system requests it.
110127 *
111- * @param host {@link Object} requesting permissions .
128+ * @param host requesting context .
112129 * @param rationale a message explaining why the application needs this set of permissions,
113130 * will be displayed if the user rejects the request the first time.
114131 * @param positiveButton custom text for positive button
@@ -117,19 +134,48 @@ public static void requestPermissions(@NonNull Object host,
117134 * @param perms a set of permissions to be requested.
118135 * @see Manifest.permission
119136 */
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+ }
126145
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 ) {
129175
130176 // Check for permissions before dispatching the request
131177 if (hasPermissions (helper .getContext (), perms )) {
132- notifyAlreadyHasPermissions (host , requestCode , perms );
178+ notifyAlreadyHasPermissions (helper . getHost () , requestCode , perms );
133179 return ;
134180 }
135181
@@ -196,47 +242,90 @@ public static void onRequestPermissionsResult(int requestCode,
196242 * Check if at least one permission in the list of denied permissions has been permanently
197243 * denied (user clicked "Never ask again").
198244 *
199- * @param host {@link Object} requesting permissions.
245+ * @param host context requesting permissions.
200246 * @param deniedPermissions list of denied permissions, usually from {@link
201247 * PermissionCallbacks#onPermissionsDenied(int, List)}
202248 * @return {@code true} if at least one permission in the list was permanently denied.
203249 */
204- public static boolean somePermissionPermanentlyDenied (@ NonNull Object host ,
250+ public static boolean somePermissionPermanentlyDenied (@ NonNull Activity host ,
205251 @ 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 )
207271 .somePermissionPermanentlyDenied (deniedPermissions );
208272 }
209273
210274 /**
211275 * Check if a permission has been permanently denied (user clicked "Never ask again").
212276 *
213- * @param host {@link Object} requesting permissions.
277+ * @param host context requesting permissions.
214278 * @param deniedPermission denied permission.
215279 * @return {@code true} if the permissions has been permanently denied.
216280 */
217- public static boolean permissionPermanentlyDenied (@ NonNull Object host ,
281+ public static boolean permissionPermanentlyDenied (@ NonNull Activity host ,
218282 @ NonNull String deniedPermission ) {
219- return PermissionHelper .getInstance (host )
220- .permissionPermanentlyDenied (deniedPermission );
283+ return PermissionHelper .newInstance (host ).permissionPermanentlyDenied (deniedPermission );
221284 }
222285
223286 /**
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).
227296 */
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 );
230300 }
231301
232302 /**
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.
235307 * @return true if the user has previously denied any of the {@code perms} and we should show a
236308 * rationale, false otherwise.
237309 */
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 );
240329 }
241330
242331 /**
0 commit comments