uniapp获取安卓序列号

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

使用uniapp打包成app,有时候需要获取sdk码

代码如下(示例):

var serial= ''
var Build = plus.android.importClass("android.os.Build");
var Manifest = plus.android.importClass("android.Manifest");
var MainActivity = plus.android.runtimeMainActivity();
var SystemProperties = plus.android.importClass("android.os.SystemProperties")

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { //9.0+
  var ArrPermissions = [
    Manifest.permission.READ_PHONE_STATE,
  ];

  function PermissionCheck(permission) {
    if (Build.VERSION.SDK_INT >= 23) {
      if (MainActivity.checkSelfPermission(permission) == -1) {
        return false;
      }
    }
    return true;
  }

  function PermissionChecks(Arr) {
    var HasPermission = true;
    for (var index in Arr) {
      var permission = Arr[index];
      //如果此处没有权限,则是用户拒绝了
      if (!PermissionCheck(permission)) {
        HasPermission = false;
        break;
      }
    }
    return HasPermission;
  }

  function PermissionRequest(Arr) {
    var REQUEST_CODE_CONTACT = 101;
    if (Build.VERSION.SDK_INT >= 23) {
      MainActivity.requestPermissions(Arr, REQUEST_CODE_CONTACT);
    }
  }
  //如果没有权限,则申请权限
  if (!PermissionChecks(ArrPermissions)) {
    PermissionRequest(ArrPermissions); //此处申请权限,会弹出一个让你授权可获取设备号信息权限框
  } else { //如果拥有权限
    serial = Build.getSerial()
  }
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { //8.0+
  if (Build.SERIAL) {
    serial = Build.SERIAL;
  }
} else {
  if (SystemProperties.get('ro.serialno')) {
    serial = SystemProperties.get('ro.serialno')
  }
}
export const SERIAL = serial 

总结

Android 8.0以下:无需申请权限,可以通过Build.SERIAL获取到设备序列号Android 8.0-Android 10:需要申请READ_PHONE_STATE权限,可以通过Build.getSerial()获取到设备序列号
Android 10 以上:获取不到设备序列表(目前获取为unknow)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值