解決辦法:
先說解決辦法:android 8.0 及其以上的用這種方法獲取序列號:Build.getSerial();
原因:
我需要手機的序列號一開始我是通過下面這個方法獲取的序列號
/**
* 序列號
*
* @return
*/
public static StringgetSerialNumber() {
String serial =null;
? ? try {
Class c = Class.forName("android.os.SystemProperties");
? ? ? ? Method get = c.getMethod("get", String.class);
? ? ? ? serial = (String) get.invoke(c, "ro.serialno");
? ? }catch (Exception e) {
e.printStackTrace();
? ? }
return serial;
}
用這種方式其它手機都行畅厢,但是我用華為mate10pro就出先了Access denied finding property "ro.serialno"优幸,還說我沒有權(quán)限颓帝,但是讀手機的權(quán)限我是給了的。
Android 官開發(fā)人員博客這篇博客里有說明健霹,不過需要翻墻灸促。
里面大概說了android O為了更好的管理用戶的隱私做了一些調(diào)整猴誊,比如說剛才的那個問題影涉。并且說在Android的未來版本中,針對Android O的應用會將Build.SERIAL視為“未知,只能通過Build.getSerial();這個方法獲取了茵宪。