标签: android-autofill-manager

禁用应用程序的Android O自动填充服务

Android O具有支持字段自动填充的功能.有什么办法可以为特定的应用程序禁用它.那是我想强制我的应用程序不使用自动填充服务.

可能吗 ?

要阻止整个活动的自动填充,请在活动的onCreate()中使用:

getWindow()
  .getDecorView()
  .setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
Run Code Online (Sandbox Code Playgroud)

有没有比这更好的方法?

android autofill textview android-8.0-oreo android-autofill-manager

34
推荐指数
4
解决办法
2万
查看次数

如何从Android Oreo中禁用espresso测试的新自动填充功能

在Android设备上运行测试sdk 26会导致它们失败,因为新的自动填充功能会在espresso尝试点击它们时隐藏字段.

我在firebase测试实验室运行我的测试,所以我不能在我的测试设备上手动禁用它们.

一些图片:

1.单击用户名字段前,密码可见.

在此输入图像描述

2.单击用户名字段后,此自动填充对话框将隐藏密码字段:

在此输入图像描述

3.登录后显示另一个"填充"对话框:

在此输入图像描述

Espresso无法点击现在的密码字段,因为自动填充对话框隐藏了我的字段和fail.

AutofillManager#disableAutofillServices()仅使用禁用#2.对话但#3.还在那里.

如何在测试设备上禁用自动填充?

testing android android-testing android-espresso android-autofill-manager

19
推荐指数
3
解决办法
4649
查看次数

如何在 Jetpack Compose 中集成自动填充

我想在我的应用程序中提供一些自动填充功能(电子邮件和密码),该功能完全使用 Jetpack compose 编写。我偶然发现了这篇博文和我都尝试过的演示代码。不幸的是,与文本字段交互时我无法收到任何弹出窗口。

修改我的代码后,我最终使用了提供的演示。一个最小的示例如下所示(ExplicitAutofillTypesDemo可组合项取自上面提到的演示代码,没有任何修改):

class MainActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            ExplicitAutofillTypesDemo()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我缺少什么?我需要在其他地方启用它吗?官方撰写自动填充文档不是很有帮助。我只想在触摸文本字段时获得自动填充弹出窗口,如上面的博客文章中所示。

android android-autofill-manager android-jetpack-compose

10
推荐指数
1
解决办法
3409
查看次数

AutofillManager NPE 崩溃:尝试在空对象引用上调用虚拟方法 containsKey(java.lang.String)'

我没有在项目中使用 AutofillManager 的直接痕迹,但在崩溃分析中仍然遇到此崩溃。我们该如何处理这个问题?

崩溃日志-

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Bundle.containsKey(java.lang.String)' on a null object reference.

    android.view.autofill.AutofillManager.onAuthenticationResult AutofillManager.java:1798
    android.app.Activity.dispatchActivityResult Activity.java:8674
    android.app.ActivityThread.deliverResults ActivityThread.java:5850
    android.app.ActivityThread.handleSendResult ActivityThread.java:5896
    android.app.servertransaction.ActivityResultItem.execute ActivityResultItem.java:54
    android.app.servertransaction.ActivityTransactionItem.execute ActivityTransactionItem.java:45
    android.app.servertransaction.TransactionExecutor.executeCallbacks TransactionExecutor.java:135
    android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:95
    android.app.ActivityThread$H.handleMessage ActivityThread.java:2434
    android.os.Handler.dispatchMessage Handler.java:106
    android.os.Looper.loopOnce Looper.java:226
    android.os.Looper.loop Looper.java:313
    android.app.ActivityThread.main ActivityThread.java:8633
    java.lang.reflect.Method.invoke Method.java
    com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:567
    com.android.internal.os.ZygoteInit.main ZygoteInit.java:1135
Run Code Online (Sandbox Code Playgroud)

android android-studio android-autofill-manager

9
推荐指数
1
解决办法
2415
查看次数

Android 8.1上的AutofillManager WebView输入崩溃

我有自动填充管理器的错误,当我关注任何输入时 - 它会引发异常:

W/System.err: java.lang.NullPointerException: activityToken
W/System.err: at android.os.Parcel.readException(Parcel.java:2011)
W/System.err: at android.os.Parcel.readException(Parcel.java:1951)
 at android.view.autofill.IAutoFillManager$Stub$Proxy.startSession(IAutoFillManager.java:397)
 at android.view.autofill.AutofillManager.startSessionLocked(AutofillManager.java:1012) W/System.err: at android.view.autofill.AutofillManager.notifyViewEntered(AutofillManager.java:734) android.view.autofill.AutofillManager.notifyViewEntered(AutofillManager.java:706)
Run Code Online (Sandbox Code Playgroud)

我能够通过在基础活动中添加下一个代码来修复它onCreate():

public static void preventViewAutoFill(@NonNull Window window) {
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) {
        final Method method;
        try {
            method = View.class.getMethod(AUTO_FILL_MANAGER_METHOD, Integer.TYPE);
        } catch (Exception ignore) {
            return;
        }
        if (method != null) {
            try {
                method.invoke(window.getDecorView(), IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
            } catch (Exception ignore) {
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个问题在除了输入内部的所有视图中都有WebView.当用户专注于WebView应用程序崩溃中的任何输入时,我有一个带有输入字段的WebView .

有没有办法在应用程序层或WebView端修复此问题?

应用程序定位25 API,最小16.

java android webview android-autofill-manager android-8.1-oreo

8
推荐指数
0
解决办法
472
查看次数

如何使用 Android 自动填充 API

我已经使用 android webview 组件构建了一个小浏览器,并希望使用 Android AutoFill API 集成密码/凭据管理器支持。

我已经阅读了文档,但完全迷失了方向,并且找不到任何与 webviews 等复杂事物集成的示例。

javascript 方面对我来说不是问题,当用户在登录表单上选择输入(并且应该显示自动填充对话框)以及完成输入用户名和密码时,我已经触发了事件并提交页面(并且凭据保存回密码管理器),但我正在努力理解这方面的 android 方面。

webview 似乎已经对此有了一些基本的支持,例如,如果我长按登录表单输入,并在上下文菜单中选择“自动填充”,我可以让它插入一些保存在凭证管理器中的值。问题是凭据已根据我的应用程序 ID 保存,而不是网站域,所以我的第一个问题是,当我请求自动填充菜单时,如何告诉 API 是针对特定字段类型的(例如用户名/密码)并属于特定网站,因此它知道要获取哪些凭据并可以稍后更新它们?这是我在选择登录表单中的字段时触发自动填充对话框的尝试。

更新: 当我在我的应用程序中创建一个静态 webview 时,自动填充会正确保存并提示表单上的凭据,并在每个站点正确保存它们但我需要它在 recyclerview 中的 webviews 中工作,并且由于某种原因,尽管共享,但它们没有相同的设置。我在 recyclerviews https://developer.android.com/guide/topics/text/autofill-optimize#recycle 中找到了有关自动填充的信息,但使用setAutofillId()似乎没有帮助,甚至这里的官方示例在我测试时似乎有点不可靠它在我的手机上https://github.com/android/input-samples/blob/master/AutofillFramework/Application/src/main/java/com/example/android/autofill/app/commoncases/RecyclerViewActivity.java

android autofill android-webview android-recyclerview android-autofill-manager

8
推荐指数
1
解决办法
1936
查看次数

保存为自动填充对话框未显示

我有一个显示用户名用户界面的活动,输入该用户名并点击继续按钮后显示输入密码用户界面。输入密码并点击登录按钮后,完成当前活动并启动新活动。在我的设备上,我选择了 Google 自动填充服务,因此在第一个活动完成后,我想要“保存以供自动填充?” 对话框显示,但事实并非如此。我通过添加 autofillHints 来准备我的应用程序,而在我的活动中没有添加任何其他内容。我应该添加任何内容才能弹出对话框吗?

android autofill android-autofill-manager

7
推荐指数
1
解决办法
2050
查看次数

React Native - 无法让 Android sms-otp 自动填充工作

我正在使用 0.66(也尝试过 0.68rc4),但无法让 otp 自动填充在 Android 上运行。这是我拥有的组件

<Input
  ...
  autoComplete="sms-otp"
  ...
/>
Run Code Online (Sandbox Code Playgroud)

我尝试了https://github.com/faizalshap/react-native-otp-verify库并且它有效,但我想看看我是否可以使用 RN 提供的内容(如果可能的话)。SMS 还附加了正确的 app_hash,因此能够使用上面的库,但不能使用开箱即用的解决方案。

有没有人有什么建议?

sms android autofill react-native android-autofill-manager

7
推荐指数
1
解决办法
3515
查看次数

Android - Google 自动填充未在更改密码屏幕上显示更新密码(仅限密码字段)

我们有一个带有登录/注册视图的应用程序。当用户创建新帐户或登录时,Android 自动填充框架会要求保存用户名和密码。

现在,一旦用户登录 - 我们有一个密码字段屏幕,用户可以通过输入当前密码和新密码来更改密码。但修改密码后,并没有要求更新密码。有没有办法强制Android自动填充框架更新密码?

android android-autofill-manager

6
推荐指数
0
解决办法
263
查看次数

读取浏览器中显示的输入字段的属性

使用软键盘API,我可以使用以下代码示例获取android EditText的属性

EditorInfo ei = getCurrentInputEditorInfo();
Log.i(TAG, "found field hintText = " + ei.hintText);
Run Code Online (Sandbox Code Playgroud)

但是如果从浏览器显示了输入字段,则上面的以下代码将不会检索提示文本。

如何获得在浏览器中显示的输入字段的属性?

android autofill android-autofill-manager

5
推荐指数
0
解决办法
67
查看次数