通过 Activity 结果 API 启用自动填充服务
Autofill service enable via Activity Results API
我正在尝试使用 kotlin 和 AndroidX 为 android.provider.Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE
注册一个 ActivityResultContract
:
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: Can only use lower 16 bits for 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
。
我正在尝试使用 kotlin 和 AndroidX 为 android.provider.Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE
注册一个 ActivityResultContract
:
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: Can only use lower 16 bits for 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
。