智能客服
你问我答,随时在线为你解决问题
开发者也可直接调用Ads Kit的AIDL接口获取华为设备上的OAID,这种集成方式不需要集成任何华为SDK。AIDL接口获取到的OAID与同一台设备上SDK接口获取到的OAID相同。

1.创建接口OpenDeviceIdentifierService的AIDL文件,放置在com.uodis.opendevice.aidl包路径下,如下图:

2.将以下内容复制到AIDL文件中。
- package com.uodis.opendevice.aidl;
- /** 重要:请不要修改此AIDL文件的方法顺序 */
- interface OpenDeviceIdentifierService {
- /** 获取OAID */
- String getOaid();
- /** 获取限制跟踪参数,true:限制跟踪;false:不限制跟踪*/
- boolean isOaidTrackLimited();
- }
3.创建一个类,实现Android原生的ServiceConnection接口。
步骤1 实现ServiceConnection的onServiceConnected方法。
步骤2 调用Android原生的OpenDeviceIdentifierService.Stub.asInterface方法获取OpenDeviceIdentifierService。
步骤3 调用getOaid和isOaidTrackLimited方法获取OAID和“限制个性化广告”开关。
- private final class IdentifierServiceConnection implements ServiceConnection {
- private IdentifierServiceConnection() {
- }
- @Override
- public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
- Log.i(TAG, "onServiceConnected");
- OpenDeviceIdentifierService service = OpenDeviceIdentifierService.Stub.asInterface(iBinder);
- if (null != service) {
- try {
- String oaid = service.getOaid();
- boolean isDisable = service.isOaidTrackLimited();
- AdvertisingIdClient.Info info = new AdvertisingIdClient.Info(oaid, isDisable);
- updateAdIdInfo(info);
- } catch (RemoteException e) {
- Log.e(TAG, "getChannelInfo Excepition");
- } finally {
- mContext.unbindService(this);
- }
- }
- }
- @Override
- public void onServiceDisconnected(ComponentName componentName) {
- Log.i(TAG, "onServiceDisconnected");
- }
- }
4.连接OAID的AIDL服务。
步骤1 创建一个IdentifierServiceConnection实例。
步骤2 创建一个Intent,Action是“com.uodis.opendevice.OPENIDS_SERVICE”。
步骤3 设置Intent的包名为”com.huawei.hwid”。
步骤4 调用bindService连接OAID的AIDL服务。
- private boolean bindService() {
- IdentifierServiceConnection serviceConnection = new IdentifierServiceConnection();
- Intent intent = new Intent("com.uodis.opendevice.OPENIDS_SERVICE");
- intent.setPackage("com.huawei.hwid");
- boolean result = bindService(intent, serviceConnection , Context.BIND_AUTO_CREATE);
- Log.i(TAG, "bindService result: " + result);
- return result;
- }