Почему мой идентификатор приложения Flutter отсутствует, когда он запрашивает запись автозаполнения на Android? ⇐ Android
-
Anonymous
Почему мой идентификатор приложения Flutter отсутствует, когда он запрашивает запись автозаполнения на Android?
Я пытаюсь реализовать функцию автозаполнения в моей форме входа в свое приложение. Он работает хорошо и просит пользователя сохранить пароль, но когда он это делает (или когда он запрашивает запись), идентификатор приложения отсутствует, а менеджер паролей, который я использую (keepass2Android), показывает «Androidapp://» вместо «Androidapp: //com.developer.appID». Когда я смотрю, что делает Netflix, он запрашивает запись для «androidapp://com.netflix.mediaclient»
Я пробовал искать другие вопросы по переполнению стека, задавать вопросы в чате, изучать документацию по Android и Flutter, но не нашел никаких «конфигураций идентификаторов приложений автозаполнения». Или что-то подобное. Кажется, у всех проблемы с автозаполнением, которое работает, но не с идентификатором приложения, который отсутствует.
Вот код моей формы входа:
/*некоторый структурный код*/ ребенок: Столбец( дети: [ ТекстФормФилд( контроллер: _urlController, автозамена: ложь, ), AutofillGroup(дочерний элемент: Столбец( дети: [ ТекстФормФилд( autofillHints: const [AutofillHints.username], контроллер: _usernameController, textInputAction: TextInputAction.next, автозамена: ложь, ), ТекстФормФилд( контроллер: _passwordController, autofillHints: const [AutofillHints.пароль], автозамена: ложь, textInputAction: TextInputAction.done, ), ], )), Кнопка входа в систему ( formKey: _formKey, usernameController: _usernameController, контроллер пароля: _passwordController, urlController: _urlController, setHomeWidget: setHomeWidget, ), //... другой код /*loginSubmitButton.onpressed имеет TextInput.finishAutofillContext(); */ AndroidManifest.xml:
build.gradle в каталоге приложения:
def localProperties = новые свойства() def localPropertiesFile = rootProject.file('local.properties') если (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') {читатель -> localProperties.load(читатель) } } def flutterRoot = localProperties.getProperty('flutter.sdk') если (flutterRoot == ноль) { } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') если (flutterVersionCode == ноль) { флаттерверсионкод = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') если (flutterVersionName == null) { флаттерверсионнаме = '1.0' } применить плагин: «com.android.application» применить плагин: «kotlin-android» применить плагин: «com.google.gms.google-services» применить плагин: «com.google.firebase.crashlytics» применить из: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" def keystoreProperties = новые свойства() def keystorePropertiesFile = rootProject.file('key.properties') если (keystorePropertiesFile.exists()) { keystoreProperties.load(новый FileInputStream(keystorePropertiesFile)) } андроид { compileSdkVersion flutter.compileSdkVersion ndkVersion флаттер.ndkVersion компиляцияварианты { исходная совместимость JavaVersion.VERSION_1_8 целевая совместимость JavaVersion.VERSION_1_8 } котлинОпции { jvmTarget = '1,8' } исходные наборы { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { // ЗАДАЧА: укажите свой уникальный идентификатор приложения (https://developer.android.com/studio/bu ... on-id.html). идентификатор приложения «com.tomprotiva.autojidelna» // Вы можете обновить следующие значения в соответствии с потребностями вашего приложения. // Для получения дополнительной информации см. https://docs.flutter.dev/deployment/and ... figuration. minSdkВерсия 19 targetSdkVersion 32 Код версии 155 Имя версии '1.1.1' } подписываниеConfigs { выпускать { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? файл(keystoreProperties['storeFile']): ноль storePassword keystoreProperties['storePassword'] } } типы сборки { выпускать { SigningConfig SigningConfigs.release } } } порхать { источник '../..' } зависимости { реализация "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" }
Я пытаюсь реализовать функцию автозаполнения в моей форме входа в свое приложение. Он работает хорошо и просит пользователя сохранить пароль, но когда он это делает (или когда он запрашивает запись), идентификатор приложения отсутствует, а менеджер паролей, который я использую (keepass2Android), показывает «Androidapp://» вместо «Androidapp: //com.developer.appID». Когда я смотрю, что делает Netflix, он запрашивает запись для «androidapp://com.netflix.mediaclient»
Я пробовал искать другие вопросы по переполнению стека, задавать вопросы в чате, изучать документацию по Android и Flutter, но не нашел никаких «конфигураций идентификаторов приложений автозаполнения». Или что-то подобное. Кажется, у всех проблемы с автозаполнением, которое работает, но не с идентификатором приложения, который отсутствует.
Вот код моей формы входа:
/*некоторый структурный код*/ ребенок: Столбец( дети: [ ТекстФормФилд( контроллер: _urlController, автозамена: ложь, ), AutofillGroup(дочерний элемент: Столбец( дети: [ ТекстФормФилд( autofillHints: const [AutofillHints.username], контроллер: _usernameController, textInputAction: TextInputAction.next, автозамена: ложь, ), ТекстФормФилд( контроллер: _passwordController, autofillHints: const [AutofillHints.пароль], автозамена: ложь, textInputAction: TextInputAction.done, ), ], )), Кнопка входа в систему ( formKey: _formKey, usernameController: _usernameController, контроллер пароля: _passwordController, urlController: _urlController, setHomeWidget: setHomeWidget, ), //... другой код /*loginSubmitButton.onpressed имеет TextInput.finishAutofillContext(); */ AndroidManifest.xml:
build.gradle в каталоге приложения:
def localProperties = новые свойства() def localPropertiesFile = rootProject.file('local.properties') если (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') {читатель -> localProperties.load(читатель) } } def flutterRoot = localProperties.getProperty('flutter.sdk') если (flutterRoot == ноль) { } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') если (flutterVersionCode == ноль) { флаттерверсионкод = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') если (flutterVersionName == null) { флаттерверсионнаме = '1.0' } применить плагин: «com.android.application» применить плагин: «kotlin-android» применить плагин: «com.google.gms.google-services» применить плагин: «com.google.firebase.crashlytics» применить из: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" def keystoreProperties = новые свойства() def keystorePropertiesFile = rootProject.file('key.properties') если (keystorePropertiesFile.exists()) { keystoreProperties.load(новый FileInputStream(keystorePropertiesFile)) } андроид { compileSdkVersion flutter.compileSdkVersion ndkVersion флаттер.ndkVersion компиляцияварианты { исходная совместимость JavaVersion.VERSION_1_8 целевая совместимость JavaVersion.VERSION_1_8 } котлинОпции { jvmTarget = '1,8' } исходные наборы { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { // ЗАДАЧА: укажите свой уникальный идентификатор приложения (https://developer.android.com/studio/bu ... on-id.html). идентификатор приложения «com.tomprotiva.autojidelna» // Вы можете обновить следующие значения в соответствии с потребностями вашего приложения. // Для получения дополнительной информации см. https://docs.flutter.dev/deployment/and ... figuration. minSdkВерсия 19 targetSdkVersion 32 Код версии 155 Имя версии '1.1.1' } подписываниеConfigs { выпускать { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? файл(keystoreProperties['storeFile']): ноль storePassword keystoreProperties['storePassword'] } } типы сборки { выпускать { SigningConfig SigningConfigs.release } } } порхать { источник '../..' } зависимости { реализация "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" }
Мобильная версия