[全网首发]MIUI系统判断自己的app是否有自启动权限(无root, 不需要申请系统权限)

众所周知, miui的自启动权限没有提供api (如果有就打脸了 请告诉我…) 所以不知道怎么判断自启动
这个应该是全网首发 至少目前2019-08-21 在网上百度和谷歌找不到这类代码
某日无聊反编译看了下miui的源码看到的一个可疑工具类看名字和函数名可以判断自启动. 试了下果然可以!

废话不多说, 直接上代码, 亲测可用 (MIUI10/MIUI11)

 public static boolean isAllowAutoStart(Context context,String packageName){
        try {
            @SuppressLint("PrivateApi")
            Method method = Class.forName("android.miui.AppOpsUtils")
                    .getMethod("getApplicationAutoStart", Context.class, String.class);
            return (int) method.invoke(null,context,packageName) == 0; //0已允许, 1已拒绝
        } catch (Exception e) {
            e.printStackTrace();
        }
        //如果系统更新改了api可能导致没法判断
        return true;
    }

至于怎么跳转到自启动页面,请参考我另一篇文章
Intent跳转到[自启动]页面全网最全适配机型解决方案(持续更新)

你可能感兴趣的:(Android适配问题)