在应用中,我希望通过TelephonyManager.getDeviceId()
获取唯一的手机ID。要使用此权限,我需要此权限READ_PHONE_STATE
。问题在于Android 6的运行时权限。在运行时权限弹出对话框中,它要求授予权限“制作和管理电话”,这可能会吓到用户使用应用程序。可以做些什么?或者,如果不使用如此大的权限,我可以获得设备的任何其他唯一标识符吗?
TelephonyManager TM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceId = TM.getDeviceId();
答案 0 :(得分:8)
我在我的应用中使用它作为唯一的设备标识符,我不需要任何运行时权限。
String android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.ANDROID_ID);
或者您可以使用此
String uuid = UUID.randomUUID().toString();
答案 1 :(得分:3)
从某个权限组请求权限会打开一个对话框,该对话框授予来自所述群组的所有权限(前提是您还要求他们你的清单)。
示例:在清单中询问READ_PHONE_STATE
和CALL_PHONE
。在运行时仅请求READ_PHONE_STATE
。获得权限对话框。确认您已被授予两种权限。
危险权限和权限组列表:https://developer.android.com/guide/topics/permissions/requesting.html
此行为自Android 6以来未发生变化,但将来可能会被更改。