安卓10获取OAID

时间:2024-04-08 13:36:51

项目需求安卓10需要获取oaid参数,网上找了一圈,发现写的实现方式都比较复杂多余。摸索了一下 这里做个记录

1:下载移动安全联盟(MSA)提供的sdk

2:一般安卓项目可以直接接入移动安全联盟提供的aar格式sdk包,不过由于我们项目比较特殊,我把aar格式的sdk拆分成jar包资源进行集成的:

安卓10获取OAID

步骤也比较简单,把所有的资源放入项目的指定位置,配置一下需要的权限

3:下面是实现的代码,一共就两个步骤:初始化sdk、获取oaid 结束。

参考下面加粗倾斜部分代码,要注意获取oaid不要在主线程中调用,否则可能报错

public class MainActivity extends AppCompatActivity {
    private String TAG = "MainActivity";
    private TextView tvMsg;
    int errorCode = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvMsg = findViewById(R.id.tv_msg);

        try {
            JLibrary.InitEntry(MainActivity.this);//初始化
        } catch (Exception e) {
            e.printStackTrace();
        }

        new Thread(){
            @Override
            public void run() {
                //需要在子线程中处理的逻辑
                errorCode = MdidSdkHelper.InitSdk(MainActivity.this, true, new IIdentifierListener() {
                    @Override
                    public void OnSupport(boolean b, IdSupplier idSupplier) {
                        if (idSupplier == null) {
                            return;
                        }
                        Log.e(TAG,"OAID = " + idSupplier.getOAID());
                        tvMsg.setText("OAID = " + idSupplier.getOAID());
                    }
                });
            }
        }.start();


        if (errorCode  == ErrorCode.INIT_ERROR_DEVICE_NOSUPPORT) {//不支持 的设备
            Log.e(TAG,"不支持的设备");
        } else if (errorCode == ErrorCode.INIT_ERROR_LOAD_CONFIGFILE) {// 加载配置文件出错
            Log.e(TAG,"加载配置文件出错");
        } else if (errorCode == ErrorCode.INIT_ERROR_MANUFACTURER_NOSUPPORT) {//不支持的设备厂商
            Log.e(TAG,"不支持的设备厂商");
        } else if (errorCode == ErrorCode.INIT_ERROR_RESULT_DELAY) {//获取接口是异步的,结果会在回调中返回,回调执行的回调可能在工作线程
            Log.e(TAG,"获取接口是异步的,结果会在回调中返回,回调执行的回调可能在工作线程");
        } else if (errorCode == ErrorCode.INIT_HELPER_CALL_ERROR) {//反射调 用出错
            Log.e(TAG,"反射调用出错");
        }
    }


}