判斷Android 系統是MIUI 的,魅族的Flyme ,還是原生的?
// 檢測MIUI
import java.io.IOException;
public final class MIUIUtils {
private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";
private static final String KEY_MIUI_VERSION_NAME = "ro.miui.ui.version.name";
private static final String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";
public static boolean isMIUI() {
try {
final BuildProperties prop = BuildProperties.newInstance();
return prop.getProperty(KEY_MIUI_VERSION_CODE, null) != null
|| prop.getProperty(KEY_MIUI_VERSION_NAME, null) != null
|| prop.getProperty(KEY_MIUI_INTERNAL_STORAGE, null) != null;
} catch (final IOException e) {
return false;
}
}
}
// 檢測Flyme
import android.os.Build;
import java.lang.reflect.Method;
public final class FlymeUtils {
public static boolean isFlyme() {
try {
// Invoke Build.hasSmartBar()
final Method method = Build.class.getMethod("hasSmartBar");
return method != null;
} catch (final Exception e) {
return false;
}
}
}
//引用到的工具類
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
public class BuildProperties {
private final Properties properties;
private BuildProperties() throws IOException {
properties = new Properties();
properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));
}
public boolean containsKey(final Object key) {
return properties.containsKey(key);
}
public boolean containsValue(final Object value) {
return properties.containsValue(value);
}
public Set<Entry<Object, Object>> entrySet() {
return properties.entrySet();
}
public String getProperty(final String name) {
return properties.getProperty(name);
}
public String getProperty(final String name, final String defaultValue) {
return properties.getProperty(name, defaultValue);
}
public boolean isEmpty() {
return properties.isEmpty();
}
public Enumeration<Object> keys() {
return properties.keys();
}
public Set<Object> keySet() {
return properties.keySet();
}
public int size() {
return properties.size();
}
public Collection<Object> values() {
return properties.values();
}
public static BuildProperties newInstance() throws IOException {
return new BuildProperties();
}
}
作者:Mariotaku
連結:https://www.zhihu.com/question/22102139/answer/24834510
來源:知乎
相關文章
- JS 判斷客戶端是iOS還是AndroidJS客戶端iOSAndroid
- 判斷使用的是 x11 還是 wayland
- 怎麼判斷Win10系統中硬碟是SSD還是HDDWin10硬碟
- Linux下判斷磁碟是SSD還是HDD的3種方法Linux
- 判斷客戶端是iOS還是Android,判斷是不是在微信瀏覽器開啟客戶端iOSAndroid瀏覽器
- REDHAT中如何判斷主機的CPU是32位還是64位的Redhat
- JAVA關於判斷年份是閏年還是平年的問題Java
- JDK是如何判斷兩個物件是否相同的?判斷的流程是什麼?JDK物件
- fastjson判斷JSON字串是Object還是List<Object>ASTJSON字串Object
- 魅族HMS是什麼?魅族手機出現HMS怎麼辦?
- cv2 判斷圖片是冷還是暖
- python 判斷變數是數字型還是字元型Python變數字元
- 判斷當前訪問的使用者是 PC端 還是 手機端
- 傳魅族Flyme主創人員跳槽 華米OV都躺槍了
- js 判斷是手機訪問,還是pc訪問JS
- windows 之醬紫判斷是UEFI還是legacy啟動Windows
- 原生js 判斷變數是一個陣列JS變數陣列
- 如何判斷頁面是pc端還是移動端,進入不同的頁面
- Spring動態代理的生成-如何判斷是使用JDK動態代理還是CGlib代理SpringJDKCGLib
- 通過ABAP程式碼判斷當前系統型別,BYD還是S4 OP還是S4 Cloud型別Cloud
- 判斷javaScript變數是Ojbect型別還是Array型別JavaScript變數型別
- PHP判斷是手機移動端訪問還是PC端訪問的函式PHP函式
- 魅族19系列到現在還沒訊息你看好驍龍8還是天璣?
- 判斷在移動端還是PC開啟
- 判斷是否是陣列的幾種方法陣列
- 判斷日期是該年的第幾天
- ionic-判斷是裝置時手機還是平板(iPad,tablet)iPad
- 筆記: 判斷lib庫是動態庫還是靜態庫筆記
- 伺服器系統探測及識別、容器判斷是怎麼做的?伺服器
- 魅族16和魅族15區別對比 魅族15和魅族16哪個更好?
- 判斷Linux系統是否被黑的方法Linux
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- 你家的免費OA系統是擺設還是幫手?
- 魅族16與魅族16 Plus全面評測 魅族16值得買嗎?
- 判斷是什麼字元字元
- 傳入http請求的UserAgent 根據它判斷是手機還是電腦傳送過來的請求HTTP
- vue 判斷使用者處於手機還是PCVue
- win10系統ie怎麼知道是32位的還是64位的Win10
- 【ASK_ORACLE】一眼判斷出Oracle的dmp檔案是用expdp匯出還是exp匯出Oracle