2015-12-12 3 views
8

Я пытаюсь настроить приложение на Android 6, и теперь я придерживаюсь точки, где вам нужно запросить и проверить разрешения.Не удается решить метод checkSelfPermission

Я попытался следующие из документации:

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);

Проблема заключается в том, что Android-студия говорит Cannot resolve method 'checkSelfPermission'.

Я уже включил appcompat и поддержку lib. ContextCompat известен AS, но сам метод неизвестен. Я не знаю, что я делаю неправильно - в другом проекте я могу написать этот метод, и он узнается.

TargetAPI является 23.

Кто-нибудь знает решение?

+0

Этот метод написан внутри деятельность? или фрагмент? или класс полезности? – Manikanta

+0

Он находится внутри onCreate of Activity – Phil

ответ

12

О, боже мой - какая глупая ошибка.

AS импортировала опорную шину как банку, и эта банка была с 2014 года. Я только что заменил jarimport реальной зависимостью и знаю, что он работает.

Спасибо за помощь, ребята!

+0

Для кого-то, кто буквально находится в вашей такой же ситуации (когда ответы остальных не будут применяться к моему делу), но на самом деле не понял, как вы его решили, не могли бы вы рассказать подробнее? Что именно вы заменили, с чем? Заранее спасибо! –

13

Вот как вам нужно вызвать в различных сценариях,

В случае деятельности:

ContextCompat.checkSelfPermission(MyActivity.this, 
     Manifest.permission.WRITE_CALENDAR); 

В случае фрагмента:

ContextCompat.checkSelfPermission(getActivity(), 
     Manifest.permission.WRITE_CALENDAR); 

В случае использования утилиты класса контекст:

ContextCompat.checkSelfPermission(context, 
     Manifest.permission.WRITE_CALENDAR); 

Комментарий для получения дополнительной информации

+0

Если он находится в onCreate(), вы можете использовать это: ContextCompat.checkSelfPermission (это, Manifest.permission.WRITE_CALENDAR); – Manikanta

+1

AS говорит мне, что не знает функции 'checkSelfPermission', это проблема. Если это помогает: проект импортируется из Eclipse. Другой, о котором я упоминал выше, где я могу сделать checkcheck, является исходным проектом AS – Phil

+1

Хорошо, вы можете опубликовать свой build.gradle. – Manikanta

3

Для Fragment использования getActivity().checkSelfPermission

Для Activity использования this..checkSelfPermission или просто checkSelfPermission

1
@SuppressLint("NewApi") 

я просто использовал это на верхней части моей страницы, и это работает для меня ...

0

Как глупо, как возможно, это может быть не в том месте. У меня такая же проблема. Жирная часть - это то место, где я изначально поставил код. Курсовая курсовая точка там, где она должна была уйти

locationListener = new LocationListener() { 
    @Override 
    public void onLocationChanged(Location location) { 
     Log.i("-----------", location.toString()); 
    } 
    **if (ContextCompat.checkSelfPermission(this, 
     Manifest.permission.ACCESS_FINE_LOCATION) != 
      PackageManager.PERMISSION_GRANTED) {'some code'}** 
    }; 'End of LocationListener method 
    *if (ContextCompat.checkSelfPermission(this, 
     Manifest.permission.ACCESS_FINE_LOCATION) != 
     PackageManager.PERMISSION_GRANTED) { 'some code'}* 
+0

Хмм Редактирование не делал, как было сказано. Раздел «полужирный» фактически заключен в «**», секция «курсив» заключена в «*», – gavin

Смежные вопросы