Permissionsdispatcher: lint CallNeedsPermission on same named function

Created on 22 Mar 2019  Â·  5Comments  Â·  Source: permissions-dispatcher/PermissionsDispatcher

502 - is almost the same except now both classes are annotated with @RuntimePermissions

Overview

I have two classes (i.e. Activities), both annotated with @RuntimePermissions, both contains same named function, but the first one is annotated with @NeedsPermission, the second one - is not

// MainActivity.kt

@RuntimePermissions
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        someFunWithPermissionCheck()
    }

    @NeedsPermission(Manifest.permission.CAMERA)
    fun someFun() {
        Toast.makeText(this, "someFun!", Toast.LENGTH_SHORT).show()
    }
}

// SecondActivity.kt

@RuntimePermissions
class SecondActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        otherFunWithPermissionCheck()
        someFun()
    }

    // no annotation here
    fun someFun() {
        Toast.makeText(this, "someFun without permission", Toast.LENGTH_SHORT).show()
    }

    @NeedsPermission(Manifest.permission.CAMERA)
    fun otherFun() {
        Toast.makeText(this, "reallyRequiresPermission", Toast.LENGTH_SHORT).show()
    }
}

Both classes has someFun(), but the second one is not annotated, so it shouldn't be treated as an error

Expected

Lint will not show any error

Actual

/SecondActivity.kt:21: Error: Trying to access permission-protected method directly [CallNeedsPermission]
someFun()

Environment

  • Library version: 4.3.0

Reproducible steps

  • ./gradlew lint
bug contributionwelcome

Most helpful comment

@hotchemi I'll try to fix it and open a PR as soon as find some free time, maybe on the upcoming weekends!

All 5 comments

@repitch 👀

@hotchemi I'll try to fix it and open a PR as soon as find some free time, maybe on the upcoming weekends!

I am getting a similar problem with two methods in the same class, one annotated, one is not. One of the methods has a boolean parameter. So this doesn't only affect methods in seperate classes, but also ones with different parameter counts.

The original issue was resolved with #627 but https://github.com/permissions-dispatcher/PermissionsDispatcher/issues/602#issuecomment-496225878 is kind of difficult to address...🤔Anyway let me create another issue for tracking.

Was this page helpful?
0 / 5 - 0 ratings