@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (DEBUG) { Log.v("PermissiveFragment", "Results: " + Arrays.toString(permissions) + " = " + Arrays.toString(grantResults)); } waitingForResult = false; // save result, postpone sending this event until this fragment is resumed result = new RequestPermissionsResult(permissions, grantResults); if (isResumed()) { Log.e(TAG, "It's in resumed state, so we should close it immediately."); closeFragment(); } }
private void finalizeAction(Permissive.Action action) { Context context = action.getContext(); if (context != null) { final int[] grants = getPermissionGrants(context, action.getPermissions()); fireActionCallbacks(action, new RequestPermissionsResult(action.getPermissions(), grants)); } }
@Test public void testBadArguments() { try { new RequestPermissionsResult(permissions, new int[]{ PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_GRANTED, 0 // redundant element }); fail("Number of arguments is not equal."); } catch (Exception e) { // ok } }
@Test public void testRefusedPermissions() { RequestPermissionsResult request = new RequestPermissionsResult(permissions, new int[]{ PackageManager.PERMISSION_DENIED, PackageManager.PERMISSION_DENIED, PackageManager.PERMISSION_DENIED, PackageManager.PERMISSION_DENIED }); assertArrayEquals(permissions, request.refusedPermissions); assertTrue(request.grantedPermissions.length == 0); }
@Test public void testGrantedPermissions() { RequestPermissionsResult request = new RequestPermissionsResult(permissions, new int[]{ PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_GRANTED }); assertArrayEquals(permissions, request.grantedPermissions); assertTrue(request.refusedPermissions.length == 0); }
@Test public void testSplittingPermissions() { RequestPermissionsResult request = new RequestPermissionsResult(permissions, new int[]{ PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_GRANTED, PackageManager.PERMISSION_DENIED, PackageManager.PERMISSION_DENIED }); final String[] expectGranted = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_NETWORK_STATE}; final String[] expectRefused = {Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.ACCOUNT_MANAGER}; assertArrayEquals(expectGranted, request.grantedPermissions); assertArrayEquals(expectRefused, request.refusedPermissions); } }