Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jetpack Composeで自動入力を完全攻略(作成:o3)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tonionagauzzi
April 24, 2025
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jetpack Composeで自動入力を完全攻略(作成:o3)
tonionagauzzi
April 24, 2025
More Decks by tonionagauzzi
See All by tonionagauzzi
Androidエンジニアが大規模プロダクトのWebフロントエンドとバックエンドに越境して感じたギャップと習得したマインド
tonionagauzzi
0
150
Kotlin2.3明示的バッキングフィールド
tonionagauzzi
1
370
【Android】テキスト選択色の問題修正で心がけたこと
tonionagauzzi
0
260
Android 15以上でPDFのテキスト検索を爆速開発!
tonionagauzzi
0
390
Googleの新しいコーディングAIエージェントJulesを使ってみた
tonionagauzzi
0
830
Compose におけるパスワード自動入力とパスワード保存
tonionagauzzi
0
520
Androidテスト基礎講義
tonionagauzzi
0
390
Android Composeでの自動入力(作成:GPT-4o)
tonionagauzzi
0
160
Jetpack Composeで自動入力(Autofill)を実装しよう(作成:claude-3.7-sonnet)
tonionagauzzi
0
170
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Claude Code のすすめ
schroneko
67
230k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
450
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
320
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
480
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
390
The Language of Interfaces
destraynor
162
27k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
570
Building Adaptive Systems
keathley
44
3.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
A designer walks into a library…
pauljervisheath
211
24k
Transcript
Jetpack Compose で 自動入力(Autofill)を完全攻略 Android Study JAM / 2025 Speaker:
トニオ・ナガウッツィ 1
Agenda 1. 自動入力(Autofill)とは 2. Compose UI 1.8 での実装方法 3. パスワード保存のハマりどころ
4. CredentialManager による解決策 5. まとめ & Q&A 2
自動入力とは? ユーザー名やパスワードを自動で入力・生成する Android OS の機能 旧 View 系では android:autofillHints で簡単設定
Jetpack Compose では UI 1.8 から正式サポート Compose UI <1.8 でも AutofillType が存在するが非推奨 & 挙動が不安定 3
Step 1 Compose UI 1.8 へのアップデート // build.gradle.kts(:app) dependencies {
implementation("androidx.compose.ui:ui:1.8.0-beta03") } 1.7 系以前は Autofill API が Experimental beta02 以前に既知のバグ → beta03 推奨 4
Step 2 保存済みパスワードを呼び出す Column { TextField( value = username.value, onValueChange
= { username.value = it }, modifier = Modifier .semantics { contentType = ContentType.Username } ) TextField( value = password.value, onValueChange = { password.value = it }, modifier = Modifier .semantics { contentType = ContentType.Password } ) } contentType を指定するだけ! 5
Step 3 新しいパスワードを自動生成 Column { TextField( value = newPassword.value, onValueChange
= { newPassword.value = it }, modifier = Modifier .semantics { contentType = ContentType.NewPassword } ) TextField( value = newPasswordToConfirm.value, onValueChange = { newPasswordToConfirm.value = it }, modifier = Modifier .semantics { contentType = ContentType.NewPassword } ) } 2 つの欄に同じ生成パスワードが同時入力される 6
Step 4 パスワードを保存したい! (AutofillManager 編) val autofillManager = LocalAutofillManager.current Button(onClick
= { autofillManager?.commit() }) { Text("Reset credentials") } しかし… ダイアログが表示されないケース多数 要件が厳しすぎる 7
AutofillManager の罠 1. ContentType.NewUsername & ContentType.NewPassword を 同じ Composable に
配置 2. ユーザーが 両方のフィールドを編集 しないと commit が無効 実際の UI/UX と合わない Issue Tracker でも多数報告 (link) 8
Step 5 CredentialManager で解決 val context = LocalContext.current val scope
= rememberCoroutineScope() Button(onClick = { scope.launch { val cm = CredentialManager.create(context) val req = CreatePasswordRequest(username, newPassword.value) cm.createCredential(request = req, context = context) } }) { Text("Reset credentials") } 依存関係: implementation("androidx.credentials:credentials:1.2.0") 9
ベストプラクティス & Tips UI 1.8 以上を必須にする Modifier.semantics { contentType =
... } を忘れない 保存機能は CredentialManager で実装 端末側の「自動入力サービス」が有効かを事前にガイド 10
まとめ Compose でも自動入力は簡単! 読込: contentType を設定するだけ 保存: AutofillManager は条件が厳しい →
CredentialManager を使う 最新情報は公式ドキュメント & Issue Tracker をチェック 11
ご清聴ありがとうございました 質問タイム 12