На Android> =6.0, Мы должны запросить время выполнения разрешения.
Step1: добавьте в файле
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Step2 AndroidManifest.xml: разрешение Запроса.
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE_STATE);
} else {
//TODO
}
Step3: обратный вызов Дескриптора, когда Вы запрашиваете разрешение.
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_READ_PHONE_STATE:
if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
//TODO
}
break;
default:
break;
}
}
Редактирование: чиновник Read ведут сюда Запрос Полномочий во Время выполнения
Я испытывал эту проблему на устройствах Samsung (прекрасный на других). как zyamys, предложенный в его комментарии, я добавил manifest.permission строку, но в дополнение к, а не вместо исходной строки, таким образом:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE" />
я нацелен на API 22, не должны явно просить полномочия.
Вы выполняете Android M? Если так, это вызвано тем, что недостаточно объявить полномочия в декларации. Для некоторых полномочий необходимо явно спросить пользователя во времени выполнения: http://developer.android.com/training/permissions/requesting.html