用于获取我从以下代码中使用的IMEI:
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);
} else {
iMEI = tm.getDeviceId();
}但是当我的应用程序运行这个对话框时:

该程序要求授予To make and manage phone calls权限,这可能会使用户不敢使用应用程序。
现在我的问题是: 为什么READ_PHONE_STATE许可问“打和管理电话”?,而我还没有在我的应用程序中打电话和管理电话。
发布于 2019-06-11 06:11:24
READ_PHONE_STATE权限被列为危险权限,并提供对读电话状态的访问。它属于Phone权限组。如果请求危险权限,系统将显示与其组相关的对话框。以你为例,Phone。这就是原因-用户被要求“打电话和管理电话”的许可。这是如何询问权限的- https://developer.android.com/training/permissions/requesting
要使其更清楚,请参见https://developer.android.com/guide/topics/permissions/overview
上面写着-
如果设备运行的是Android6.0(APILevel23),并且应用程序的targetSdkVersion为23或更高,则当应用程序请求危险的权限时,会出现以下系统行为:
有很多更好的方法来获得唯一的标识符。例如-
String android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.ANDROID_ID);发布于 2019-06-11 06:06:15
为什么READ_PHONE_STATE权限要求“打电话和管理电话”?虽然我没有打电话和管理电话在我的应用程序。
在Marshmallow之后,我们需要显式地调用属于危险权限的权限。
READ_PHONE_STATE属于权限组,名为Phone
发布于 2022-04-26 08:29:50
因为谷歌变懒了。READ_EXTERNAL_STORAGE也是如此
https://stackoverflow.com/questions/56537344
复制相似问题