public
abstract
@interface
RequiresPermission
implements
Annotation
android.support.annotation.RequiresPermission |
Denotes that the annotated element requires (or may require) one or more permissions.
Example of requiring a single permission:
@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 at least one permission from a set:
@RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
public abstract Location getLastKnownLocation(String provider);
Example of requiring multiple permissions:
@RequiresPermission(allOf = {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.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)
:
public void startActivity(@RequiresPermission Intent 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:
Intent intent = new Intent(Intent.ACTION_CALL);
startActivity(intent);
and the actual permission requirement for this particular intent is described on
the Intent name itself:
@RequiresPermission(Manifest.permission.CALL_PHONE)
public static final String ACTION_CALL = "android.intent.action.CALL";
Nested classes | |
---|---|
@interface |
RequiresPermission.Read
Specifies that the given permission is required for read operations. |
@interface |
RequiresPermission.Write
Specifies that the given permission is required for write operations. |
Inherited methods | |
---|---|
From
interface
java.lang.annotation.Annotation
|