Android READ_PHONE_STATE运行时权限要求拨打和管理电话

时间:2016-03-10 05:51:42

标签: android android-permissions

在应用中,我希望通过TelephonyManager.getDeviceId()获取唯一的手机ID。要使用此权限,我需要此权限READ_PHONE_STATE。问题在于Android 6的运行时权限。在运行时权限弹出对话框中,它要求授予权限“制作和管理电话”,这可能会吓到用户使用应用程序。可以做些什么?或者,如果不使用如此大的权限,我可以获得设备的任何其他唯一标识符吗?

TelephonyManager TM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

String deviceId = TM.getDeviceId();

2 个答案:

答案 0 :(得分:8)

我在我的应用中使用它作为唯一的设备标识符,我不需要任何运行时权限。

String android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
                Settings.Secure.ANDROID_ID);

或者您可以使用此

 String uuid = UUID.randomUUID().toString();

答案 1 :(得分:3)

从某个权限组请求权限会打开一个对话框,该对话框授予来自所述群组的所有权限(前提是您还要求他们你的清单)。

示例:在清单中询问READ_PHONE_STATECALL_PHONE。在运行时仅请求READ_PHONE_STATE。获得权限对话框。确认您已被授予两种权限。

危险权限和权限组列表:https://developer.android.com/guide/topics/permissions/requesting.html

此行为自Android 6以来未发生变化,但将来可能会被更改。