2016-12-10 21 views
0

Я пытаюсь сделать метод, который проверяет разрешения на андроид. Но когда я это называю, у меня есть предупреждение о пропавших без вести.Android: Подавить предупреждение при вызове метода

Вот упрощение моего кода:

public void lintTestMethod(){ 
    if(isPermissionGranted()) { 
     requiresLocationPermission(); 
    } 
} 

public boolean isPermissionGranted(){ 
    return true; 
} 

@RequiresPermission(anyOf = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}) 
public void requiresLocationPermission(){ 

} 

Я попробовал, добавив:

@SuppressLint("MissingPermission") 
public boolean isPermissionGranted(){ 
    return true; 
} 

Но это не работает (я также попытался с помощью SuppressWarning).

В идеале, мне не нужно изменять метод lintTestMethod.

Есть ли у кого-нибудь идеи о том, как с этим бороться?

+0

Это неясно, где вы добавляете аннотацию подавления – piotrpo

+0

Извините, я обновил имя вызова метода. Теперь это должно быть более ясным. –

ответ

0
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

Добавьте это в файл AndroidManifest.xml.

+0

Спасибо за ваш ответ, но это не проблема, разрешения в моем манифесте: s –

0

Я нашел обходное решение для своей проблемы, прочитав код шнура, проверяющий разрешения (Code). Решение - назвать мой метод под названием «isPermissionGranted»: «check * Permission». На самом деле это не то решение, которое я искал, но оно работает. Если у кого-то есть лучший способ сделать это, мне все равно интересно.

Вот интересная часть кода:

String name = node.astName().astValue(); 
if ((name.startsWith("check") || name.startsWith("enforce")) && name.endsWith("Permission")) { 
     mChecksPermission = true; 
     mDone = true; 
} 
1

Вы размещаете подавление в неположенном месте:

Одно подавление заявление:

public void lintTestMethod(){ 
     if(isPermissionGranted()) { 
      //noinspection MissingPermission 
      requiresLocationPermission(); 
     } 
    } 

Метод подавления Диапазон:

@SuppressWarnings("MissingPermission") 
public void lintTestMethod(){ 
    if(isPermissionGranted()) { 
     requiresLocationPermission(); 
    } 
} 

Это можно сделать с помощью меню быстрой установки Android Studio.