uniapp 如何获取用户信息:Android ID 的完整指南

在uniapp开发中,如何获取Android设备的Android ID?需要具体代码示例和完整的实现步骤,包括权限配置和可能遇到的兼容性问题解决方案。在不同Android版本和厂商设备上获取这个ID会有哪些限制?

2 回复

在uniapp中获取Android ID,需使用plus.device.uuid。步骤如下:

  1. 在manifest.json中勾选Android权限:<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

  2. 代码示例:

let uuid = plus.device.uuid;
console.log('Android ID:', uuid);

注意:部分设备可能返回相同值,且恢复出厂设置会重置。


在 UniApp 中获取 Android ID 主要用于设备唯一标识,但需注意 Android 10(API 29)及以上版本限制,且需配置权限和平台特定代码。以下是完整指南:

步骤 1:配置权限

manifest.json 中添加 Android 权限:

{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "READ_PHONE_STATE"
        ]
      }
    }
  }
}

步骤 2:编写原生代码

创建原生 Android 模块(如 android-id.js):

// 获取 Android ID(仅 Android 平台)
export function getAndroidId() {
  return new Promise((resolve, reject) => {
    if (uni.getSystemInfoSync().platform === 'android') {
      // 调用原生 Android 方法
      plus.android.importClass("android.provider.Settings$Secure");
      const context = plus.android.runtimeMainContext();
      const androidId = android.provider.Settings.Secure.getString(
        context.getContentResolver(),
        android.provider.Settings.Secure.ANDROID_ID
      );
      resolve(androidId || null);
    } else {
      reject('仅支持 Android 平台');
    }
  });
}

步骤 3:在页面中使用

在 Vue 页面中调用:

<template>
  <view>
    <text>Android ID: {{ androidId || '未获取' }}</text>
    <button @click="fetchAndroidId">获取 Android ID</button>
  </view>
</template>

<script>
import { getAndroidId } from '@/utils/android-id.js';

export default {
  data() {
    return {
      androidId: null
    };
  },
  methods: {
    async fetchAndroidId() {
      try {
        this.androidId = await getAndroidId();
        uni.showToast({ title: '获取成功', icon: 'success' });
      } catch (error) {
        console.error(error);
        uni.showToast({ title: '获取失败', icon: 'none' });
      }
    }
  }
};
</script>

注意事项

  1. 权限说明READ_PHONE_STATE 权限在部分系统可能触发隐私提示。
  2. 兼容性:Android 10+ 中,Android ID 对每个应用唯一,不同应用获取的值不同。
  3. 替代方案:考虑使用 UUID 或设备指纹(如硬件信息组合)作为备用标识。
  4. 审核风险:若上架应用市场,需说明使用目的以避免被拒。

总结

通过原生 Android API 获取 Android ID,结合 UniApp 的异步调用实现跨平台兼容。建议测试不同 Android 版本,并处理权限拒绝情况。

回到顶部