【发布时间】:2019-12-21 19:08:37
【问题描述】:
我已经更新了目标 sdk 版本 27,并且我已在 READ_PHONE_STATE. 的 manifest 中给予许可,但我的应用程序在 utils.java 上仍然崩溃
deviceId = TelephonyMgr.getDeviceId();
在这条线上,我还要求运行时许可,但问题还是一样
private void RequestMultiplePermission() {
// Creating String Array with Permissions.
ActivityCompat.requestPermissions(LoginActivity.this, new String[]
{
CALL_PHONE,
READ_PHONE_STATE
}, RequestPermissionCode);
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case RequestPermissionCode:
if (grantResults.length > 0) {
boolean GetCallPermission = grantResults[0] == PackageManager.PERMISSION_GRANTED;
boolean GetReadphoneper = grantResults[1] == PackageManager.PERMISSION_GRANTED;
if (GetCallPermission && GetReadphoneper) {
Toast.makeText(LoginActivity.this, "Permission Granted", Toast.LENGTH_LONG).show();
}
else {
///Toast.makeText(Login.this,"Permission Granted",Toast.LENGTH_LONG).show();
}
}
break;
}
}
在这一行中它会崩溃 deviceId = TelephonyMgr.getDeviceId();
public static String getUniqueDeviceId(Context context) {
String deviceId;
// 1 compute IMEI
final TelephonyManager TelephonyMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
}
deviceId = TelephonyMgr.getDeviceId(); // Requires // READ_PHONE_STATE
if (deviceId == null) {
// 2 android ID - unreliable
deviceId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
if (deviceId == null) {
Random r = new Random();
deviceId = String.valueOf((r.nextInt() + r.nextInt()));
}
e(deviceId);
return deviceId;
}
【问题讨论】:
-
permission in manifest还不够。您还需要运行时权限 -
我已经给出了运行 ActivityCompat.requestPermissions(LoginActivity.this, new String[] { CALL_PHONE, READ_PHONE_STATE }, RequestPermissionCode);时间许可也。 @VladyslavMatviienko
-
好的,当你尝试这样做时
deviceId = TelephonyMgr.getDeviceId() -
在我的 Utils.java 文件中@VladyslavMatviienko
-
没有人知道你的
Utils.java是什么。只有在获得权限后才能调用它。这就是为什么我在你打电话时问它
标签: android