MIUI 判断悬浮窗权限
2015-12-12 11:18
393 查看
/** * Created by chenzy on 2015/3/31. * * MIUI 悬浮窗判断工具类 */ public class AlterWindowUtil { public static final String TAG ="AlterWindowUtil"; /** * 4.4 以上可以直接判断准确 * * 4.4 以下非MIUI直接返回true * * 4.4 以下MIUI 可 判断 上一次打开app 时 是否开启了悬浮窗权限 * * @param context * @return */ @TargetApi(Build.VERSION_CODES.KITKAT) public static boolean isFloatWindowOpAllowed(Context context) { final int version = Build.VERSION.SDK_INT; if(!DeviceUtil.isFlyme4() && !DeviceUtil.isMiui(context)){ return true; } if (version >= 19) { return checkOp(context, 24); //自己写就是24 为什么是24?看AppOpsManager //AppOpsManager.OP_SYSTEM_ALERT_WINDOW } else { if(DeviceUtil.isMiui(context)){ if ((context.getApplicationInfo().flags & 1 << 27) == 1 <<27 ) { return true; } else { return false; } }else{ return true; } } } @TargetApi(Build.VERSION_CODES.KITKAT) public static boolean checkOp(Context context, int op) { final int version = Build.VERSION.SDK_INT; if (version >= 19) { AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); try { Class managerClass = manager.getClass(); Method method = managerClass.getDeclaredMethod("checkOp", int.class, int.class, String.class); int isAllowNum = (Integer) method.invoke(manager, op, Binder.getCallingUid(), context.getPackageName()); if (AppOpsManager.MODE_ALLOWED == isAllowNum) { return true; } else { return false; } } catch (Exception e) { e.printStackTrace(); } } return false; } }
相关文章推荐
- 安装程序找不到office.zh-cn\OfficeMUI.msi。请浏览确定有效的安装源,然后单击”确定“。
- Java并发包中的同步队列SynchronousQueue实现原理
- BlockingQueue解析
- Hbuilder快捷入门
- UI中的继承源图
- hdu 3530 Subsequence 单调队列
- MUI之父页面刷新
- 关于uitableviewcell的accessoryType属性
- Legacy UEFI启动的比较
- BOIS模式 UEFI启动与Legacy启动鉴别
- 如何使用java自动生成数据表id,java.util.UUID类
- UEFI:BIOS下一代
- UI中的自适应高度
- MUI 版本更新
- 288. Unique Word Abbreviation
- ue4内存管理
- ue4中寻路设置navmesh
- iOS之UI--涂鸦画板实例 (有待更新)
- ue4中的AI和行为树(BluePrint版)
- IOS开发UI篇--一个侧滑菜单SlidingMenu