项目需求安卓10需要获取oaid参数,网上找了一圈,发现写的实现方式都比较复杂多余。摸索了一下 这里做个记录
1:下载移动安全联盟(MSA)提供的sdk
2:一般安卓项目可以直接接入移动安全联盟提供的aar格式sdk包,不过由于我们项目比较特殊,我把aar格式的sdk拆分成jar包资源进行集成的:
步骤也比较简单,把所有的资源放入项目的指定位置,配置一下需要的权限
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,"反射调用出错");
}
}
}