Android 读取设备信息

Android 读取设备信息,需要手动进行授权操作

在AndroidManifest.xml中添加

<!-- 允许应用读取手机状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

在build.gradle中添加依赖

implementation 'com.github.gzu-liyujiang:Android_CN_OAID:4.2.4'

MainActivity

private void permissionHelper() {
	// 请求多个权限
    String[] permissions = {
            Manifest.permission.CAMERA,
            Manifest.permission.RECORD_AUDIO,
            Manifest.permission.READ_CALL_LOG,
            Manifest.permission.READ_PHONE_STATE,
            Manifest.permission.ACCESS_WIFI_STATE,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
    };

    PermissionUtils.checkAndRequestPermissions(mContext, permissions, REQUEST_PERMISSION_CODE);
}
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        // 处理权限请求结果
        PermissionUtils.handlePermissionResult(this, requestCode, permissions, grantResults);
    }
public class PermissionUtils {
    private static final int REQUEST_PERMISSION_CODE = 1;

    /**
     * 检查并请求多个权限
     *
     * @param activity    当前活动
     * @param permissions 需要请求的权限数组
     * @param requestCode 请求码
     */
    public static void checkAndRequestPermissions(Activity activity, String[] permissions, int requestCode) {
        List<String> permissionsToRequest = new ArrayList<>();

        for (String permission : permissions) {
            if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
                permissionsToRequest.add(permission);
            }
        }

        if (!permissionsToRequest.isEmpty()) {
            ActivityCompat.requestPermissions(activity, permissionsToRequest.toArray(new String[0]), requestCode);
        } else {
            onAllPermissionsGranted(activity, permissions);
        }
    }

    /**
     * 处理权限请求结果
     *
     * @param activity     当前活动
     * @param requestCode  请求码
     * @param permissions  请求的权限数组
     * @param grantResults 请求结果数组
     */
    public static void handlePermissionResult(Activity activity, int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == REQUEST_PERMISSION_CODE) {
            boolean allPermissionsGranted = true;

            for (int result : grantResults) {
                if (result != PackageManager.PERMISSION_GRANTED) {
                    allPermissionsGranted = false;
                    break;
                }
            }

            if (allPermissionsGranted) {
                onAllPermissionsGranted(activity, permissions);
            } else {
                onSomePermissionsDenied(activity, permissions, grantResults);
            }
        }
    }

    /**
     * 所有权限被授予时的回调
     *
     * @param activity    当前活动
     * @param permissions 被授予的权限数组
     */
    private static void onAllPermissionsGranted(Activity activity, String[] permissions) {
        // 在这里处理所有权限被授予的情况
        LogUtils.d("授予的所有权限: " + Arrays.toString(permissions));
    }

    /**
     * 有些权限被拒绝时的回调
     *
     * @param activity     当前活动
     * @param permissions  请求的权限数组
     * @param grantResults 请求结果数组
     */
    private static void onSomePermissionsDenied(Activity activity, String[] permissions, int[] grantResults) {
        // 在这里处理有些权限被拒绝的情况
        LogUtils.e("某些权限被拒绝: " + Arrays.toString(permissions));
    }
}

/**
  * 获取设备信息
  *
  * @param contextClass : 页面对象
  * @return : 设备信息
  */
 private JSONObject getDeviceInfo(Object contextClass) {
     Context context = (Context) contextClass;

     if (context instanceof Activity) {
         Activity activity = (Activity) context;
         Application application = activity.getApplication();
		
		 // 注册
         DeviceIdentifier.register(application);

         JSONObject jsonObject = new JSONObject();

		 // 获取IMEI大概率是获取不到,不清楚什么原因,可能是权限问题 
         jsonObject.put("IMEI", DeviceIdentifier.getIMEI(activity));
         jsonObject.put("AndroidID", DeviceIdentifier.getAndroidID(activity));
         jsonObject.put("WidevineID", DeviceIdentifier.getWidevineID());
         jsonObject.put("PseudoID", DeviceIdentifier.getPseudoID());
         jsonObject.put("GUID", DeviceIdentifier.getGUID(activity));
         jsonObject.put("supportedOAID", DeviceID.supportedOAID(activity));
         jsonObject.put("OAID", DeviceIdentifier.getOAID(activity));
         jsonObject.put("ClientId", DeviceIdentifier.getClientId());

         return jsonObject;
     }

     return null;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值