微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过活动结果API启用自动填充服务

如何解决通过活动结果API启用自动填充服务

我尝试使用kotlin和AndroidX为ActivityResultContract注册android.provider.Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE

class AutofillContract() : ActivityResultContract<Any?,ActivityResult>() {
    override fun createIntent(context: Context,input: Any?): Intent
        = Intent(android.provider.Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE)

    override fun parseResult(resultCode: Int,intent: Intent?): ActivityResult
        = ActivityResult(resultCode,intent)
}

val afrl = registerForActivityResult(AutofillContract()) {
    if (it.resultCode == RESULT_OK) ...
    else ...
}

但是,当我尝试使用它时:

afrl.launch(AutofillContract().createIntent(this,null))

我得到 IllegalArgumentException:我只能将低16位用于requestCode ,我认为这是由内部startActivityForResult()调用触发的。

我以前没有使用过自定义ActivityResultContract,虽然看起来很简单,但对我来说还是有点粗略-我不确定输入是否无关紧要(Any?)是可行的方法,但在这种情况下似乎无关紧要(第一个版本使用Intent作为输入类型,但似乎没有意义,而且问题“只能使用低16位...”。相同)。

我正在使用androidx.activity:activity-ktx:1.2.0-alpha08

解决方法

根据this issue,当您使用较旧版本的Fragments时,会出现该错误。

您还必须将Fragments的版本升级到androidx.fragment:fragment-ktx:1.3.0-alpha08

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。