使用代码提示miui系统开启悬浮框

String ver = MiuiUtils.getSystemProperty("ro.miui.ui.version.name");
        if("V6".equals(ver)||"V7".equals(ver)){
            int i = MiuiUtils.checkOp(mContext,24);
            if(i==1){
                //没有权限       
            }
       }



/**
     * 判断系统是否为miui
     * @param propName
     * @return
     */
public static String getSystemProperty(String propName){
        String line;
        BufferedReader input = null;
        try {
            Process p = Runtime.getRuntime().exec("getprop " + propName);
            input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
            line = input.readLine();
            input.close();
        }
        catch (IOException ex) {
            return null;
        }
        finally {
            if(input != null) {
                try {
                    input.close();
                }
                catch (IOException e) {

                }
            }
        }
        return line;
    }




 /**
     返回 0 就代表有权限,1代表没有权限,-1函数出错啦
     */
    public static int checkOp(Context context, int op){
        final int version = Build.VERSION.SDK_INT;
        if (version >= 19){
            Object object = context.getSystemService("appops");
            Class c = object.getClass();
            try {
                Class[] cArg = new Class[3];
                cArg[0] = int.class;
                cArg[1] = int.class;
                cArg[2] = String.class;
                Method lMethod = c.getDeclaredMethod("checkOp", cArg);
                return (Integer) lMethod.invoke(object, op, Binder.getCallingUid(), context.getPackageName());
            } catch(NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
        return -1;
    }


public static void openMiuiPermissionActivity(Context context) {
        Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR");

        if (true) {
            intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");
            intent.putExtra("extra_pkgname", context.getPackageName());
        }

        if (isIntentAvailable(context, intent)) {
            if (context instanceof Activity) {
                Activity a = (Activity) context;
                a.startActivityForResult(intent, 24);
            }
        }
    }

    private static boolean isIntentAvailable(Context context, Intent intent) {
        if (intent == null) return false;
        return context.getPackageManager().queryIntentActivities(intent, PackageManager.GET_ACTIVITIES).size() > 0;
    }

“`

MIUI的锁屏显示权限需要在应用程序的设置中打开。以下是使用Java代码实现打开MIUI的锁屏显示权限的步骤: 1. 首先,检查设备是否为MIUI设备: ```java private boolean isMIUI() { String manufacturer = Build.MANUFACTURER; String model = Build.MODEL; return manufacturer.equals("Xiaomi") && model.startsWith("MI"); } ``` 2. 如果设备是MIUI设备,则检查应用程序是否拥有锁屏显示权限: ```java private boolean checkLockScreenPermission(Activity activity) { AppOpsManager appOpsManager = (AppOpsManager) activity.getSystemService(Context.APP_OPS_SERVICE); int mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, Process.myUid(), activity.getPackageName()); return mode == AppOpsManager.MODE_ALLOWED; } ``` 3. 如果应用程序没有锁屏显示权限,则请求权限: ```java private void requestLockScreenPermission(Activity activity) { Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, activity.getPackageName()); intent.putExtra(Settings.EXTRA_CHANNEL_ID, activity.getApplicationInfo().uid); activity.startActivityForResult(intent, REQUEST_CODE_LOCK_SCREEN_PERMISSION); } ``` 请注意,REQUEST_CODE_LOCK_SCREEN_PERMISSION是一个你定义的请求代码,用于在onActivityResult()方法中处理结果。 4. 在Activity的onActivityResult()方法中检查请求的结果: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_LOCK_SCREEN_PERMISSION) { if (checkLockScreenPermission(this)) { // 锁屏显示权限已授予 } else { // 锁屏显示权限未授予 } } } ``` 如果用户授予了锁屏显示权限,你可以在应用程序中显示通知,即使设备被锁定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值