后台传入一个字符串数组,表示该用户拥有的权限,根据权限控制是否显示某个控件。
String[] permissions = {"show_layout1"};
新建注解RequirePermission
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface RequirePermission {
String permission() default "";
}
在activity中给layout添加注解
@RequirePermission(permission = "show_layout1")
@BindView(R.id.layout1)
LinearLayout layout1;
在onCreate中根据权限控制显示
Class<XXActivity> clazz = XXActivity.class;
Field[] declaredFields = clazz .getDeclaredFields();
Map<String, ViewGroup> layoutMap = new HashMap<>();
for (Field declaredField : declaredFields) {
RequirePermission permissionAnnotation = declaredField.getAnnotation(RequirePermission.class);
if (permissionAnnotation != null) {
try {
layoutMap.put(permissionAnnotation.permission(), (ViewGroup) declaredField.get(this));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
for (int i = 0; i < permissions.length(); i++) {
String permission = permissions.getString(i);
ViewGroup layout = layoutMap.get(permission);
if (layout != null) {
layout.setVisibility(View.VISIBLE);
}
}
这样需要新加权限的只需要添加一个RequirePermission注解就好