java - 无法在android 11中检索手机的SIM卡和IMEI号码
问题描述
我想从安卓手机中检索 SIM 和 IMEI 号码。在 android 9 或更低版本中,我可以正确检索它,但在更新版本中它会粉碎应用程序并且无法检索电话号码。我需要这个,因为要识别安装 opt 和我的应用程序的正确移动设备。我的源代码看起来像。
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_NUMBERS) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
String simID = telephonyManager.getSimSerialNumber();
String telNumber = telephonyManager.getSubscriberId();
String IMEI = telephonyManager.getDeviceId();
我还添加了必要的权限,例如。
if (ActivityCompat.checkSelfPermission(this, "android.permission.READ_PRIVILEGED_PHONE_STATE") != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{"android.permission.READ_PRIVILEGED_PHONE_STATE"}, 111);
return false;
}
我还添加了 READ_PHONE_STATE 和 READ_PHONE_NUMBERS 权限。
解决方案
在新设备中Device ID
使用
String dev_id = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
推荐阅读
- django - 创建了一个基于 django 的应用程序,并希望使用图形 API 读取用户的邮件(但没有用户在场)
- java - 在不同时间发送多条消息 Android Java
- php - 有没有办法使用 GET 方法中的变量在 laravel 中使用 where like 查询?
- javascript - 加载更多按钮
- reactjs - 两种方式通信flutter webview和reactjs网站
- github - 将提交推送到 github 存储库抛出错误
- android - Connectycube 推送通知 subscribeToPushes (Android)
- java - JTree没有显示任何东西
- git - error: Terminal is dumb, but EDITOR unset - BitBucket Pipeline
- c# - 如何在 Unity 多人游戏中通过光子网络获取二维字符串数组