@RuntimePermissionsI 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
Lint will not show any error
/SecondActivity.kt:21: Error: Trying to access permission-protected method directly [CallNeedsPermission]
someFun()
Thank you for your report! Would you mind open a pull request? You can reproduce the bug in CallNeedsPermissionDetectorTest and fix the logic at CallNeedsPermissionDetector 😃
https://github.com/permissions-dispatcher/PermissionsDispatcher/blob/0c1a6b423a16b71f2a0a1de372103132d80502fc/lint/src/test/java/permissions/dispatcher/CallNeedsPermissionDetectorTest.kt#L11
https://github.com/permissions-dispatcher/PermissionsDispatcher/blob/0c1a6b423a16b71f2a0a1de372103132d80502fc/lint/src/main/java/permissions/dispatcher/CallNeedsPermissionDetector.java#L27
@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.
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!