Android Q適配之IMEI替換為Android_id
前置工作:
項目配置升到對應的29版本
compileSdkVersion: 29,
buildToolsVersion: ‘29.0.0',
minSdkVersion : 19,
targetSdkVersion : 29,
javaVersion : JavaVersion.VERSION_1_8
升級到Android Q后的權限提示界面
老版本獲取IMEI的方法:
public static String getIMEI(Context context) { String deviceId = null; try { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); deviceId = tm.getDeviceId(); if (deviceId == null || "".equals(deviceId)) { return getLocalMacAddress(context); } } catch (Exception e) { e.printStackTrace(); if (deviceId == null || "".equals(deviceId)) { return getLocalMacAddress(context);//獲取Mac地址,在Android 9 P版本中,地址會隨機變化,不可用作唯一標識,可去掉。 } } return deviceId; }
Android Q獲取IMEI方法
public static String getIMEI(Context context) { String deviceId = null; try { TelephonyManager tm = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { deviceId = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); } else { // request old storage permission if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return null; } deviceId = tm.getDeviceId(); } if (deviceId == null || "".equals(deviceId)) { return getLocalMacAddress(context); } } catch (Exception e) { e.printStackTrace(); if (deviceId == null || "".equals(deviceId)) { return getLocalMacAddress(context); } } return deviceId; }
谷歌官方有聲明:手機恢復出廠設置,Android ID會重置。
如果用戶拒絕權限,也還是會獲取不到設備標識。
所以具體優(yōu)化需自行結合開發(fā)情景,有更好的建議的道友可以評論補充說明^ - ^…
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android Studio 視頻播放失敗 start called in state1 異常怎么解決
很多朋友問小編在使用MediaPlayer播放音頻時報出 E/MediaPlayerNative: start called in state 1, mPlayer(0x0)問題,該如何處理呢,今天小編給大家?guī)砹薃ndroid Studio 視頻播放失敗 start called in state1 異常問題,需要的朋友可以參考下2020-03-03深入分析Android NFC技術 android nfc開發(fā)
本篇文章我們對android開發(fā)中nfc技術做了全面的原理分析以及實現(xiàn)過程,需要的讀者們一起參考一下吧。2017-11-11詳談android 6.0 fuse文件系統(tǒng)的掛載和卸載問題
今天小編就為大家分享一篇詳談android 6.0 fuse文件系統(tǒng)的掛載和卸載問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08Android自定義圓形View實現(xiàn)小球跟隨手指移動效果
這篇文章主要為大家詳細介紹了Android自定義圓形View實現(xiàn)小球跟隨手指移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03