安卓獲取OAID方法

背景

安卓10及以上,不再支持獲取imei,但是各個(gè)app還是需要獲取一個(gè)唯一的設(shè)備id,那怎么辦? 工信部牽頭搞了個(gè)移動(dòng)安全聯(lián)盟,里面提供了個(gè)方案。主要是讓各個(gè)手機(jī)廠商提供獲取方法,他們出個(gè)統(tǒng)一sdk方便普通廠商調(diào)用。
工信部的sdk:http://www.msa-alliance.cn/col.jsp?id=120
下面還有兩個(gè)開源的,也一樣能獲取各大廠商的設(shè)備id方案:
https://github.com/gzu-liyujiang/Android_CN_OAID
https://github.com/shuzilm-open-source/Get_Oaid_CNAdid

實(shí)際上,大家都是調(diào)用各個(gè)廠商提供的接口,以調(diào)用努比亞的為例:

import android.content.Context
import android.net.Uri
import android.os.Build
import android.os.Bundle

class NubiaDeviceIDHelper(private val mContext: Context) {
    val nubiaID: String?
        get() {
            var oaid: String? = null
            val bundle: Bundle?
            val uri = Uri.parse("content://cn.nubia.identity/identity")
            try {
                if (Build.VERSION.SDK_INT > 17) {
                    val contentProviderClient =
                        mContext.contentResolver.acquireContentProviderClient(uri)
                    bundle = contentProviderClient!!.call("getOAID", null, null)
                    if (contentProviderClient != null) {
                        if (Build.VERSION.SDK_INT >= 24) {
                            contentProviderClient.close()
                        } else {
                            contentProviderClient.release()
                        }
                    }
                } else {
                    bundle = mContext.contentResolver.call(uri, "getOAID", null, null)
                }
                val code = bundle!!.getInt("code", -1)
                if (code == 0) {
                    oaid = bundle.getString("id")
                    return oaid
                }
                return oaid
            } catch (e: Exception) {
                e.printStackTrace()
            }
            return oaid
        }
}

不同廠商的調(diào)用方式不一樣,詳見上述開源項(xiàng)目。

參考資料

https://blog.csdn.net/qq_40460042/article/details/112966136

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容