接口 MultiplePermissionsListener 没有构造函数
Interface MultiplePermissionsListener does not have constructors
我正在尝试将 Dexter 库与 Kotlin 一起使用,但我遇到了以下问题:
在这个方法中,我的 MultiplePermissionsListener() 有一个错误,错误说:
Interface MultiplePermissionsListener does not have constructors
fun takeCameraImage() {
Dexter.withActivity(this)
.withPermissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.withListener(MultiplePermissionsListener() {
@Override
fun onPermissionsChecked(report: MultiplePermissionsReport) {
if (report.areAllPermissionsGranted()) {
fileName = System.currentTimeMillis().toString() + ".jpg"
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, getCacheImagePath(fileName!!))
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
}
}
}
@Override
fun onPermissionRationaleShouldBeShown(permissions: List<PermissionRequest>,token: PermissionToken) {
token.continuePermissionRequest();
}
}).check();
}
我对 Kotlin 没有什么经验,我不知道到底发生了什么,我不知道如何解决它,我需要一些帮助。
提前致谢
MultiplePermissionsListener
是一个接口,因此不能被实例化。您需要创建一个匿名 class,它使用所谓的对象表达式实现 MultiplePermissionsListener
接口。这很简单。替换
MultiplePermissionsListener()
和
object : MultiplePermissionsListener
有关详细信息,请参阅 https://kotlinlang.org/docs/reference/object-declarations.html#object-expressions。您还需要用 Kotlin override
关键字替换 @Override
注释,即代替
@Override
fun onPermissionRationaleShouldBeShown(permissions: List<PermissionRequest>,token: PermissionToken) {
token.continuePermissionRequest();
}
你必须写
override fun onPermissionRationaleShouldBeShown(permissions: List<PermissionRequest>,token: PermissionToken) {
token.continuePermissionRequest();
}
有关详细信息,请参阅 https://kotlinlang.org/docs/reference/classes.html#overriding-methods。
我正在尝试将 Dexter 库与 Kotlin 一起使用,但我遇到了以下问题:
在这个方法中,我的 MultiplePermissionsListener() 有一个错误,错误说:
Interface MultiplePermissionsListener does not have constructors
fun takeCameraImage() {
Dexter.withActivity(this)
.withPermissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.withListener(MultiplePermissionsListener() {
@Override
fun onPermissionsChecked(report: MultiplePermissionsReport) {
if (report.areAllPermissionsGranted()) {
fileName = System.currentTimeMillis().toString() + ".jpg"
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, getCacheImagePath(fileName!!))
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE)
}
}
}
@Override
fun onPermissionRationaleShouldBeShown(permissions: List<PermissionRequest>,token: PermissionToken) {
token.continuePermissionRequest();
}
}).check();
}
我对 Kotlin 没有什么经验,我不知道到底发生了什么,我不知道如何解决它,我需要一些帮助。
提前致谢
MultiplePermissionsListener
是一个接口,因此不能被实例化。您需要创建一个匿名 class,它使用所谓的对象表达式实现 MultiplePermissionsListener
接口。这很简单。替换
MultiplePermissionsListener()
和
object : MultiplePermissionsListener
有关详细信息,请参阅 https://kotlinlang.org/docs/reference/object-declarations.html#object-expressions。您还需要用 Kotlin override
关键字替换 @Override
注释,即代替
@Override
fun onPermissionRationaleShouldBeShown(permissions: List<PermissionRequest>,token: PermissionToken) {
token.continuePermissionRequest();
}
你必须写
override fun onPermissionRationaleShouldBeShown(permissions: List<PermissionRequest>,token: PermissionToken) {
token.continuePermissionRequest();
}
有关详细信息,请参阅 https://kotlinlang.org/docs/reference/classes.html#overriding-methods。