我想检查Android应用程序上的某些权限,我从用于不同设备和编码语言的API获得了这些权限,但这是我第一次尝试使用JAVA(Android),而且似乎有所不同。
在我的应用程序中,这些权限在一个将其返回为Integer
的类中,因此,如果我要检查用户是否可以删除(十进制4),我想执行以下操作:
if(MyClass.getBit()&4){ // Is bit 2 on?
// Yes, is on
}
我遇到以下错误:
必需的布尔值,已找到整数。
没关系,我可以将其设为布尔值:
if(MyClass.getBit()&4 != 0){ // Is bit&4 not 0?
// Yes, it is different
}
我收到一个新错误:
运算符'&'不能应用于'java.lang.Integer','boolean'
所以我将返回值更改为int
,我得到了相同的结果:
运算符'&'不能应用于'int','boolean'
似乎我的方法不正确...
如何在Android上按位操作?
答案 0 :(得分:2)
这是一个优先问题,您必须添加括号,
if ((MyClass.getBit()&4) != 0){ // Is bit&4 not 0?
// Yes, it is different
}
不带括号,它将首先执行(4!= 0)部分,该部分返回一个布尔值,然后对该布尔值执行AND运算符,并在左侧执行整数。