为什么过滤系统程序用if(applicationInfo.flag&ApplicationInfo.Flag_System>0),为什么用按位与过滤,怎么理解?不可以用if(applicationInfo.flag==ApplicationInfo.Flag_System)吗?

解决方案 »

  1.   

    肯定是不对的了
    用&只是检测相同的位,看看二进制 1010 和 1111
      

  2.   

    与我心有戚戚焉!我正想发帖问这个问题。
    1.为什吗直接用if(applicationInfo.flag==ApplicationInfo.Flag_System)不行?
    2.为什么用if(applicationInfo.flag&ApplicationInfo.Flag_System>0)就可以?在这里&到底是什么意思,是进行与运算?FLAG_SYSTEM的Constant Value: 1 (0x00000001)是16进制。我知道如果是系统程序applicationInfo.flag&ApplicationInfo.Flag_System按与运算是1>0没问题,问题是applicationInfo.flag&ApplicationInfo.Flag_System>0就一定是系统程序吗?比如在ApplicationInfo中还有一个FLAG_HAS_CODE  Constant Value: 4 (0x00000004),如果applicationInfo.flags设置为它了,那么applicationInfo.flag&ApplicationInfo.Flag_System不是也大于0么?但它不一定就是系统程序吧。另外我看API中对flags的解释是Any combination of。意思是好多FLAG_XX的组合,如果是这样的话要怎么进行位与运算呢?
      

  3.   

    == 不行
    flag 每一位表示不同的含义例如 第一位表示是否是系统的 第二位表示是否允许调试
    那么 01  11 都是系统应用