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;
}