uniapp 如何获取用户信息:Android ID 的完整指南
在uniapp开发中,如何获取Android设备的Android ID?需要具体代码示例和完整的实现步骤,包括权限配置和可能遇到的兼容性问题解决方案。在不同Android版本和厂商设备上获取这个ID会有哪些限制?
2 回复
在uniapp中获取Android ID,需使用plus.device.uuid。步骤如下:
-
在manifest.json中勾选Android权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> -
代码示例:
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>
注意事项
- 权限说明:
READ_PHONE_STATE权限在部分系统可能触发隐私提示。 - 兼容性:Android 10+ 中,Android ID 对每个应用唯一,不同应用获取的值不同。
- 替代方案:考虑使用 UUID 或设备指纹(如硬件信息组合)作为备用标识。
- 审核风险:若上架应用市场,需说明使用目的以避免被拒。
总结
通过原生 Android API 获取 Android ID,结合 UniApp 的异步调用实现跨平台兼容。建议测试不同 Android 版本,并处理权限拒绝情况。

