Как решить ошибку разрешения во время выполнения?

avatar
YoYo
8 апреля 2018 в 09:43
68
2
-3

В моем приложении я хочу использовать право выполнения для получения DeviceID, и для этого я написал код ниже:

TelephonyManager tManager = (TelephonyManager) Constants.currentActivity.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(Constants.currentActivity, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.
    return TODO;
}
uuid = tManager.getDeviceId();

но я получаю сообщение об ошибке return TODO; и мне не разрешено запускать мое приложение.

Ошибка в моем LogCat:

Error:(175, 20) error: cannot find symbol variable TODO

Как это исправить?

Источник
Seelenvirtuose
8 апреля 2018 в 09:47
3

Ну... Очевидно переменная TODO нигде не определена. Так что определяйте его, или возвращайте что хотите...

YoYo
8 апреля 2018 в 09:47
0

@Seelenvirtuose, можешь прислать мне код? Спасибо

Seelenvirtuose
8 апреля 2018 в 09:49
2

Какой код? Это ваш код ("и для этого я пишу ниже коды"). Если вы не знаете, что делаете, вам, возможно, следует вернуться на несколько шагов назад и начать изучать Java или Android, соответственно.

Ответы (2)

avatar
Khemraj Sharma
8 апреля 2018 в 11:21
0

Это автоматически сгенерированный андроидом код, который сообщает, что getDeviceId необходимо предоставить некоторые разрешения. Таким образом, этот код проверяет, есть ли у приложения разрешение.

Что такое TODO = Это некоторый код, который вы должны выполнить. Вы можете просмотреть все задачи в своем проекте, нажав двойную клавишу Shift, набрав todo и нажав Enter на todo.

Здесь TODO: Consider calling означает, что это приложение не имеет вышеуказанного разрешения, и вы должны запросить разрешение.

Здесь return TODO; означает, что вы должны вернуть какое-то значение, например null или int, в зависимости от требований вашего метода.

Если вы новичок в Android, используйте эту библиотеку разрешений, чтобы запросить разрешение у пользователя.

TelephonyManager tManager = (TelephonyManager) Constants.currentActivity.getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(Constants.currentActivity, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.
    return TODO;
}
uuid = tManager.getDeviceId();

Надеюсь, это объяснение будет вам полезно. и не стесняйтесь задавать любые вопросы, если они неясны в комментариях.

avatar
Sriram
8 апреля 2018 в 11:06
1

"Решение" вашей ошибки включает однострочное изменение, а именно. изменение

return TODO;

до

return -1;

или return False; или return Null;, в зависимости от функции.

Однако, если вы не понимаете, почему это изменение должно было быть сделано, сейчас самое подходящее (и я рекомендую вам это сделать) время, чтобы сделать значительный шаг назад и попытаться понять основы самого программирования. (не для Java или Android)