26

I am trying to make runtime permissions backward compatible with older devices but using the support library i cant find checkSelfPermission() static call in ContextCompat class, but its documented here

Here is my project gradle settings:

defaultConfig {
    applicationId "org.myprogram.cool"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 39
    versionName "3.0"
}

and here is the dependencies:

compile 'com.google.android.gms:play-services:+'
compile 'com.squareup:otto:1.3.5'
compile 'com.android.support:appcompat-v7:22.1.1'

any idea what i am missing ?

j2emanue
  • 60,549
  • 65
  • 286
  • 456

3 Answers3

40

checkSelfPermission() didn't get introduced into the native Context until API 23. So you will need to use at least version 23.0.0 of the support library.

You should change this

compile 'com.android.support:appcompat-v7:22.1.1'

to this

compile 'com.android.support:appcompat-v7:23.0.1'

phxhawke
  • 2,581
  • 23
  • 17
  • I tried this thing but compilation error as minSdkVersion 16 ! how to solve this ? – Ashok Nov 11 '15 at 18:14
  • please beware of this behavior when your minSdkVersion < 23 https://stackoverflow.com/questions/33407250/checkselfpermission-method-is-not-working-in-targetsdkversion-22 – bvk256 Jan 20 '16 at 15:05
7

If you have migrated from eclipse adding the below line wont work

compile 'com.android.support:appcompat-v7:23.0.1'

While migrating, it adds appcompatv4 as an external dependent library. Make sure you have deleted the appcompatv4 library from the libs folder and then it should start working

0
  1. Make sure class exampleActivity class is extending from AppCompatActivity.

  2. Make sure that your minSdkVersion is 23 in the build.gradle file.

  3. Sync your gradle after making this change.

That should work.

aboger
  • 2,214
  • 6
  • 33
  • 47
Chekurin
  • 1
  • 1