Java源码示例:com.karumi.dexter.listener.single.PermissionListener
示例1
@Test public void onPermissionDeniedDoSequentialCheckPermissionThenNotifiesListener()
throws InterruptedException {
givenPermissionIsAlreadyDenied(ANY_PERMISSION);
givenShouldShowRationaleForPermission(ANY_PERMISSION);
PermissionListener checkPermissionOnDeniedPermissionListener =
givenARetryCheckPermissionOnDeniedPermissionListener(permissionListener);
whenCheckPermission(checkPermissionOnDeniedPermissionListener, ANY_PERMISSION);
dexter.onPermissionRequestDenied(Collections.singletonList(ANY_PERMISSION));
asyncExecutor.waitForExecution();
thenPermissionIsDenied(ANY_PERMISSION);
}
示例2
@Override public void check(final PermissionListener listener, final String permission) {
dexter.checkPermission(listener, permission, THREAD);
asyncExecutor.execute(new Runnable() {
@Override public void run() {
dexter.onActivityReady(activity);
dexter.onPermissionRequestDenied(Collections.singletonList(permission));
}
});
}
示例3
@Override
public void askForPermission(@NonNull Permission permission,
@NonNull UserPermissionRequestResponseListener userResponse, @NonNull Activity activity) {
PermissionListener[] listeners = createListeners(permission, userResponse, activity);
Dexter.withActivity(activity)
.withPermission(permission.getAndroidPermissionStringType())
.withListener(new CompositePermissionListener(listeners))
.check();
}
示例4
private PermissionListener[] createListeners(Permission permission,
UserPermissionRequestResponseListener userResponse, Activity activity) {
PermissionListener basicListener = getPermissionListenerImpl(permission, userResponse);
try {
ViewGroup viewGroup = PermissionsUIViews.getAppContainer(activity);
PermissionListener listener = getDefaultDeniedPermissionListener(viewGroup, permission);
return new PermissionListener[]{basicListener, listener};
} catch (NullContainerException n) {
return new PermissionListener[]{basicListener};
}
}
示例5
private PermissionListener getDefaultDeniedPermissionListener(ViewGroup rootView,
Permission permission) {
return SnackbarOnDeniedPermissionListener.Builder.with(rootView,
permission.getPermissionRationaleMessage())
.withOpenSettingsButton(permission.getPermissionSettingsDeniedFeedback())
.build();
}
示例6
MultiplePermissionsListenerToPermissionListenerAdapter(PermissionListener listener) {
this.listener = listener;
}
示例7
@Override public DexterBuilder withListener(PermissionListener listener) {
this.listener = new MultiplePermissionsListenerToPermissionListenerAdapter(listener);
return this;
}
示例8
private void checkSinglePermission(PermissionListener listener, String permission,
Thread thread) {
MultiplePermissionsListener adapter =
new MultiplePermissionsListenerToPermissionListenerAdapter(listener);
checkMultiplePermissions(adapter, Collections.singleton(permission), thread);
}
示例9
private PermissionListener givenARetryCheckPermissionOnDeniedPermissionListener(
PermissionListener permissionListener) {
return new RetryCheckPermissionOnDeniedPermissionListener(permissionListener,
new CheckPermissionWithOnActivityReadyInBackground());
}
示例10
private void whenCheckPermission(PermissionListener permissionListener, String permission) {
dexter.checkPermission(permissionListener, permission, THREAD);
dexter.onActivityReady(activity);
}
示例11
public RetryCheckPermissionOnDeniedPermissionListener(PermissionListener listener,
CheckPermissionAction checkPermission) {
this.listener = listener;
this.checkPermission = checkPermission;
}
示例12
private PermissionListener getPermissionListenerImpl(final Permission permission,
final UserPermissionRequestResponseListener userPermissionRequestResponseListener) {
return new GenericPermissionListenerImpl(permission, userPermissionRequestResponseListener,
contextProvider);
}
示例13
/**
* Checks the state of a specific permission reporting it when ready to the listener.
*
* @param listener The class that will be reported when the state of the permission is ready
* @param permission One of the values found in {@link android.Manifest.permission}
* @param thread thread the Listener methods will be called on
*/
void checkPermission(PermissionListener listener, String permission, Thread thread) {
checkSinglePermission(listener, permission, thread);
}
示例14
DexterBuilder withListener(PermissionListener listener);
示例15
void check(PermissionListener listener, String permission);