You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发新手获取设备IMEI遇权限问题求解决方案

解决Android获取IMEI的权限问题

首先得明确:从Android 10(API 29)开始,普通应用已经无法获取IMEI了,android.permission.READ_PRIVILEGED_PHONE_STATE是系统应用或拥有特殊系统权限的应用才能申请的,普通APP根本拿不到这个权限,别在这个权限上浪费时间。

给你几个实用的替代方案:

  • 用Android ID做设备标识:这个不需要任何特殊权限,代码示例如下:

    import android.provider.Settings;
    
    String androidId = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
    

    这个ID在设备重启后不会改变,只有恢复出厂设置才会重置。

  • 生成自定义UUID:首次启动APP时生成一个UUID,存在SharedPreferences或者本地文件里,之后每次启动都读取这个值。代码示例:

    import java.util.UUID;
    import android.content.SharedPreferences;
    
    // 生成并保存UUID
    SharedPreferences sp = getSharedPreferences("device_info", MODE_PRIVATE);
    String deviceId = sp.getString("device_id", null);
    if (deviceId == null) {
        deviceId = UUID.randomUUID().toString();
        sp.edit().putString("device_id", deviceId).apply();
    }
    

    缺点是卸载重装APP后,这个ID会重新生成。

  • 兼容旧版本(Android 9及以下):如果你的APP需要支持Android 9(API 28)及更低版本,可以申请READ_PHONE_STATE权限,动态申请后调用getImei(),但注意Android 10+调用这个方法会返回null或者抛出SecurityException。

内容的提问来源于stack exchange,提问作者Thomas Dulcamara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 08:06:23