Package com.perfectcorp.annotation
Annotation Type RequiresPermission
-
@Documented @Retention(SOURCE) @Target({ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD,PARAMETER}) public @interface RequiresPermissionDenotes that the annotated element requires (or may require) one or more permissions.Example of requiring a single permission:
Example of requiring at least one permission from a set:@RequiresPermission(Manifest.permission.SET_WALLPAPER) public abstract void setWallpaper(Bitmap bitmap) throws IOException; @RequiresPermission(ACCESS_COARSE_LOCATION) public abstract Location getLastKnownLocation(String provider);
Example of requiring multiple permissions:@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION}) public abstract Location getLastKnownLocation(String provider);
Example of requiring separate read and write permissions for a content provider:@RequiresPermission(allOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION}) public abstract Location getLastKnownLocation(String provider);@RequiresPermission.Read(@RequiresPermission(READ_HISTORY_BOOKMARKS)) @RequiresPermission.Write(@RequiresPermission(WRITE_HISTORY_BOOKMARKS)) public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks");When specified on a parameter, the annotation indicates that the method requires a permission which depends on the value of the parameter. For example, consider
android.app.Activity.startActivity(android.content.Intent):
Notice how there are no actual permission names listed in the annotation. The actual permissions required will depend on the particular intent passed in. For example, the code may look like this:public void startActivity(@RequiresPermission Intent intent) { ... }
and the actual permission requirement for this particular intent is described on the Intent name itself:Intent intent = new Intent(Intent.ACTION_CALL); startActivity(intent);@RequiresPermission(Manifest.permission.CALL_PHONE) public static final String ACTION_CALL = "android.intent.action.CALL";
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description java.lang.String[]allOfSpecifies a list of permission names that are all required.java.lang.String[]anyOfSpecifies a list of permission names where at least one is requiredbooleanconditionalIf true, the permission may not be required in all cases (e.g.java.lang.StringvalueThe name of the permission that is required, if precisely one permission is required.
-