package com.yuyh.library.permission; import android.content.Context; import android.content.Intent; import android.os.Build; import android.text.TextUtils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * 参考 http://blog.csdn.net/tgbus18990140382/article/details/47058043 * Created by hupei on 2016/7/22. */ public class MiuiOs { public static final String UNKNOWN = "UNKNOWN"; /** * 获取应用权限设置 Intent <br> * http://blog.csdn.net/dawanganban/article/details/41749911 * * @param context */ public static Intent getSettingIntent(Context context) { // 之兼容miui v5/v6/v7 的应用权限设置页面 if (getSystemVersionCode() >= 6) { Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR"); intent.setClassName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity"); intent.putExtra("extra_pkgname", context.getPackageName()); return intent; } return null; } /** * 获取 V5/V6 后面的数字 * * @return */ public static int getSystemVersionCode() { String systemProperty = getSystemProperty(); if (!TextUtils.isEmpty(systemProperty) && !systemProperty.equals(UNKNOWN) && systemProperty.length() == 2 && systemProperty.toUpperCase().startsWith("V")) { Integer code = 0; try { code = Integer.valueOf(systemProperty.substring(1)); } catch (NumberFormatException e) { e.printStackTrace(); } return code; } return 0; } /** * 判断V5/V6 * * @return V5 、V6 、V7 字符 */ public static String getSystemProperty() { String line = UNKNOWN; BufferedReader reader = null; try { Process p = Runtime.getRuntime().exec("getprop ro.miui.ui.version.name"); reader = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024); line = reader.readLine(); return line; } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } return line; } /** * 判断 activity 是否存在 * * @param context * @param intent * @return */ public static boolean isIntentAvailable(Context context, Intent intent) { if (intent == null) return false; return context.getPackageManager().queryIntentActivities(intent, 0).size() > 0; } /** * 检查手机是否是miui * * @return * @ref http://dev.xiaomi.com/doc/p=254/index.html */ public static boolean isMIUI() { String device = Build.MANUFACTURER; if (device.equals("Xiaomi")) { return true; } else { return false; } } }