天道酬勤,学无止境

禁用应用程序的Android O自动填充服务(Disabling Android O auto-fill service for an application)

问题

Android O具有支持字段自动填充的功能。 有什么方法可以针对特定应用程序禁用它。 那就是我要强制我的应用程序不要使用自动填充服务。

是否可以 ?

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

getWindow()
  .getDecorView()
  .setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);

有没有比这更好的方法了?

回答1

是否可以 ?

不是我知道的。 当然,没有任何文件记录。

有没有比这更好的方法了?

不是我知道的。

回答2

当前,没有直接的方法可以禁用整个应用程序的自动填充功能,因为自动填充功能是特定于视图的。

您仍然可以尝试这种方式,并在任何地方调用BaseActivity。

public class BaseActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       disableAutofill();
    }

    @TargetApi(Build.VERSION_CODES.O)
    private void disableAutofill() { 
        getWindow().getDecorView().setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
    }
}

您也可以通过这种方式强制请求自动填充。

public void forceAutofill() {
    AutofillManager afm = context.getSystemService(AutofillManager.class);
    if (afm != null) {
        afm.requestAutofill();
    }
}

注意:目前,自动填充功能仅在API 26 Android Oreo 8.0中可用

希望这可以帮助!

回答3

我相信所接受的答案是错误的:

因此,我有自己的类,该类扩展android.support.v7.widget.AppCompatEditText ,我所做的只是用以下值重写了以下方法:

@Override
public int getAutofillType() {
    return AUTOFILL_TYPE_NONE;
}

没有其他解决方案,甚至没有android:importantForAutofill =“ no”。

getAutofillType()来自View类,因此它也应该适用于其他所有类,例如TextInputEditText!

回答4

我也遇到了这个。 事实证明,此问题是由在嵌套在TextInputLayout内的EditText上设置提示文本引起的。

我进行了一些挖掘,并在26.0.0 Beta 2发行说明中找到了这个块。 Andorid支持发布说明2017年6月

TextInputLayout必须在onProvideAutofillStructure()上设置提示

这导致我尝试在TextInputLayout而不是嵌套的EditText上设置提示。

这为我解决了崩溃的问题。 例子:

            <android.support.design.widget.TextInputLayout
                android:id="@+id/textInputLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Some Hint Text"
                android.support.design:hintAnimationEnabled="true"
                android.support.design:hintEnabled="true"
                android.support.design:layout_marginTop="16dp">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/editText"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>

            </android.support.design.widget.TextInputLayout>
回答5

似乎是一个需要修复的错误:https://issuetracker.google.com/issues/67675432
同时,目前的解决方法是为整个项目禁用自动填充功能。 您可以在values-v26/styles.xml文件中添加以下样式,或者,如果您为EditText视图使用特定样式,则可以编辑BaseEditTextStyle。

<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
<item name="android:importantForAutofill">noExcludeDescendants</item>
</style>

并在values-v26/themes.xml文件中,您可以简单地将项目editTextStyleandroid:editTextStyle添加到应用中使用的默认主题,如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:editTextStyle">@style/App_EditTextStyle</item>
<item name="editTextStyle">@style/App_EditTextStyle</item>
</style>

这样,您可以将所有更改应用于所有EditText,而无需更改布局文件或“活动”(以后可以在修复错误后轻松将其删除)。

回答6

在您的EditText属性中添加android:importantForAutofill="no"这应该是临时修复,仅适用于api 26+

回答7

创建自定义EditText样式并将android:importantForAutofill设置为no

<style name="EditTextStyleWithoutAutoFill" parent="Widget.AppCompat.EditText">
    <item name="android:importantForAutofill">no</item>
</style>

然后在您的活动主题中将此样式设置为editTextStyle。

<item name="android:editTextStyle">@style/EditTextStyleWithoutAutoFill</item>
回答8

以我为例,我们的应用定位到sdk版本21,但较新的设备(26+)仍会弹出自动填充功能。 如果应用程序在人与人之间共享的设备上运行,这将是一个很大的问题。 仅使用android:importantForAutofill="no"对我不起作用。

我发现适用于我的情况的唯一解决方案是:

<EditText
    android:importantForAutofill="no"
    tools:targetApi="o"
    android:autofillHints="AUTOFILL_HINT_SMS_OTP" ...

我添加android:autofillHints="AUTOFILL_HINT_SMS_OTP"原因是,如果长按EditText,它仍会弹出自动填充。 基本上,我告诉该字段的自动填充功能,它正在等待一条永远不会发送的短信。 有点骇人听闻,我知道...

注意:如果尚未添加xmlns:tools="http://schemas.android.com/tools"到您的架构中,则可能需要添加xmlns:tools="http://schemas.android.com/tools"

回答9

关于Google问题跟踪器的信息,已修复。

这已在Android 8.1上修复

如果仍然存在任何问题,请向Google问题跟踪器报告,他们将重新打开进行检查。

回答10

API 28+遇到相同的问题,并禁用了自动填充功能。 对我而言,唯一的解决方案是禁用长按以获取我的视图。

                <com.google.android.material.textfield.TextInputEditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:longClickable="false"
                    android:text="@={model.emailAdress}"/>

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Disabling Android O auto-fill service for an application
    Android O has the feature to support Auto-filling for fields. Is there any way I can disable it for a specific application. That is I want to force my application not to use the auto-fill service. Is it possible ? To block autofill for an entire activity, use this in onCreate() of the activity: getWindow() .getDecorView() .setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS); Is there any better method than this ?
  • 为EditText关闭autosuggest吗?(Turn off autosuggest for EditText?)
    问题 有没有办法以编程方式关闭在输入EditText时弹出的自动建议列表? 回答1 我有同样的问题,但是我仍然想在XML文件中设置此选项,因此我做了一些进一步的研究,直到自己发现它为止。 将此行添加到您的EditText中。 android:inputType="textFilter" 这是一个提示。 如果您希望能够使用“输入”键,请使用此行。 android:inputType="textFilter|textMultiLine" 回答2 android:inputType="textNoSuggestions" 你也最好读这个 回答3 android:inputType="textVisiblePassword" 奇迹般有效 回答4 方式: 以编程方式 editText.inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS XML格式 android:inputType="textNoSuggestions" 如果已经设置了一些标志,则: 以编程方式 inputType = if (disableSuggestions) { InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS or inputType } else { inputType and InputType.TYPE_TEXT_FLAG_NO
  • Android:在listView上禁用突出显示单击(Android: disabling highlight on listView click)
    问题 我想禁用触摸listView行时出现的橙色突出显示。 到目前为止,在我的xml中,我尝试了以下操作: android:focusable="false" android:focusableInTouchMode="false" android:clickable="false" 更多信息:我希望用户触摸此listView对象上的屏幕时,它们之间的差为零。 回答1 将此添加到您的xml: android:listSelector="@android:color/transparent" 对于这个问题,这可能会起作用(我不确定,我也不知道是否有更好的解决方案): 您可以将ColorStateList应用于TextView。 回答2 RoflcoptrException的答案应该可以解决问题,但是由于某种原因它对我不起作用,因此,我正在发布对我有用的解决方案,希望它对某人有帮助 <ListView android:listSelector="@android:color/transparent" android:cacheColorHint="@android:color/transparent" /> 回答3 橙色突出显示效果是ListView上的一种样式。 本文对如何重写listView样式进行了很好的概述。 本质上,您有一个选择器,该选择器根据当前状态指定不同的样式元素。
  • 三星的“应用优化”功能可在3天后杀死后台应用程序(Samsung “App optimisation” feature kills background applications after 3 days)
    问题 我们目前正在开发一个健身跟踪器应用程序Android应用程序。 它在后台持续运行,并且在大多数设备上都可以正常运行,但是我们一直在遇到一些问题,因为该应用程序在某些三星设备上完全死掉了。 经过调查,似乎某些三星设备具有完全自定义的“应用程序优化”功能(http://forums.androidcentral.com/samsung-galaxy-s6/599408-app-optimisation-after-updating.html),该功能本质上是Doze功能的(非常)原始版本,存在于更高版本的Android中,如果三天没有使用过,它们基本上只会杀死应用程序。 由于此应用程序或多或少只进行日志记录,并且无法打开活动,因此它给我们带来了一个大问题,因为此功能已在许多三星设备上预先启用。 通过使用前台服务可以解决问题,但这是需要用不断通知打扰用户的解决方案的大锤,而且我们确实不需要将应用程序放在前台-正常电源就可以了Android的管理。 三星应用程序优化功能明确指出,如果三天未使用应用程序,它将“优化”应用程序。 有没有人对三星认为“使用过的产品”有见识,我能以某种方式触发它吗? 旁白:我认为,这是一个实施不当的功能,使Android上的开发更具敌意。 除了我们的用例之外,所有Messenger应用程序都会中断。 如果不是因为Facebook
  • Visual Studio 2015安装程序在安装过程中挂起?(Visual Studio 2015 installer hangs during install?)
    问题 我下载了Visual Studio Ultimate CTP 6的完整ISO。安装程序达到进度的90%,并停留在进度条上。 Superfetch,反恶意软件防护和其他后台进程经常进行活动,但是进度条仍然停滞不前。 最终,后台任务活动在20分钟后消失了,但是进度条仍然不会消失。 便宜的技巧:打开一个记事本窗口并将其左边缘定位,以便完美地标记进度条的当前位置。 如果进度条在大约一个小时内没有移过记事本窗口的左边缘,则可能是卡住了。 回答1 这是一个子安装程序在安装过程中卡住而无法完成的情况。 不幸的是,发生这种情况时,主安装程序似乎永远不会使操作超时。 诀窍是在详细信息模式下打开任务管理器,并寻找一个子安装程序进程,该进程显示0%CPU使用率和0%磁盘使用率,指示已死。 然后,只需终止该过程,主安装程序便会恢复。 在我的情况下,子安装程序的名称为SecondaryInstaller.exe ,根据安装日志,它在尝试为跨平台开发模块安装一些Android SDK组件时发生了该情况。 它已经永久冻结了。 我杀了它,并且主安装程序完成了。 当我运行Visual Studio时,这很好,尽管我猜测我将不得不对Android组件的安装问题进行一些研究。 回答2 我暂时禁用了防病毒(AVG)并重新启动了安装。 这样就解决了。 回答3 当前版本的AVG Free防病毒软件与Microsoft
  • 在用户名和密码上禁用Safari自动填充(Disabling Safari autofill on usernames and passwords)
    问题 您可能已经知道,无论是否设置autocomplete="off" ,Safari都有一个讨厌的自动填充错误,该错误会在其中填充电子邮件,用户名和密码字段。 这是一个基本形式: <form action="/" method="post"> <p> <label>E-mail</label> <input type="text" name="email" value="" /> </p> <p> <label>Password</label> <input type="password" name="password" value="" /> </p> </form> ... Safari会自动在页面加载时自动填充这些字段,做得好! 如果将autocomplete="off"放入字段和/或form元素,则Safari仍会自动填充这些字段: <form action="/" method="post" autocomplete="off"> <p> <label>E-mail</label> <input type="text" name="email" value="" autocomplete="off" /> </p> <p> <label>Password</label> <input type="password" name="password" value=""
  • 安卓9.0系统新特性
    安卓9.0系统新特性 新特性一: 日前针对Android系统特有的开放式特点,及其所带来的卡顿、运行不流畅问题,谷歌特意研制出最新版Android 9.0,以增强系统的封闭性。于是,网上曝出了很多安卓“抄袭”“模仿”iOS的说法。不过在笔者看来,不管是不是“抄袭”,谷歌能有这方面的想法,便意味着安卓的未来,也许就不会比苹果的iOS系统差。 就像iOS系统11.3发布测试,Android 9.0系统预览测试或许也将在本月的14号左右发布。根据此前网络上许多爱好者的发生,我们也提前预料到这次的Android 9.0或许将带给我们同以往安卓系统,完全不同的体验。 1、适配异形全面屏 iPhone X的“刘海儿”屏造型初亮相时,被网友吐槽“丑哭”。确实,从常规的审美角度来说,“刘海儿”造型的屏幕设计并不美。但是这丝毫不影响它成为各大安卓手机厂商模仿的对象,笔者猜测,原因或许就因为它是苹果设计出来的,毕竟苹果在全球手机行业代表了某种权威。 所以在今年即将发布的新机型里面,有不少安卓厂商都是异形全面屏设计。而谷歌为了照顾好这一板块,即将面世的Android 9.0系统,自然也要具备适配“刘海儿”屏的功能。 2、原声支持虹膜识别 虽然现在很多手机都支持面部识别解锁,但是实话是说,这种技术目前尚不成熟,并不是很安全。而最好的办法还是配合虹膜识别来实现更加安全的面部解锁。日前
  • javax.net.ssl.SSLException:读取错误:ssl = 0x9524b800:系统调用期间发生I / O错误,对等方重置了连接(javax.net.ssl.SSLException: Read error: ssl=0x9524b800: I/O error during system call, Connection reset by peer)
    问题 在过去的几周中,我们的客户开始看到数百个此类“ SSLException错误-对等方重置连接”,但我不知道为什么 我们使用的是带有okhttp的Retrofit,没有特殊配置public class OkHttpClientProvider implements IOkHttpClientProvider { OkHttpClient okHttpClient; public OkHttpClientProvider() { this.okHttpClient = createClient(); } public OkHttpClient getOkHttpClient() { return this.okHttpClient; } private OkHttpClient createClient() { return new OkHttpClient(); } } 上面的客户提供者是一个单例。 RestAdapter是使用此注入的客户端(我们使用匕首)构建的- RestAdapter.Builder restAdapterBuilder = new RestAdapter.Builder() .setConverter(converter) .setEndpoint(networkRequestDetails.getServerUrl()) .setClient(new
  • 禁用Android的Chrome下拉至刷新功能(Disabling android's chrome pull-down-to-refresh feature)
    问题 我为公司创建了一个小型HTML5 Web应用程序。 该应用程序显示项目列表,一切正常。 该应用程序主要用于Android手机和Chrome浏览器。 此外,该网站还保存在主屏幕上,因此Android可以将整个内容作为应用程序进行管理(我猜是使用WebView )。 Chrome Beta(我也认为Android System WebView)已经引入了“下拉刷新”功能(例如,请参阅此链接)。 这是一个方便的功能,但是我想知道是否可以使用某些meta标记(或javascript东西)来禁用它,因为用户可以在浏览列表时轻松触发刷新,并重新加载整个应用程序。 这也是应用程序不需要的功能。 我知道此功能仅在Chrome beta版中仍然可用,但我有一种感觉,那就是该功能也将登陆稳定的应用程序。 谢谢! 编辑:我已经卸载了Chrome Beta,并且固定到主屏幕的链接现在随稳定的Chrome一起打开。 因此,固定链接以Chrome开头,而不是以webview开头。 编辑:今天(2015-03-19)下拉菜单已刷新到稳定的Chrome。 编辑:从@Evyn答案我点击此链接,并获得了有效的javascript / jquery代码。 var lastTouchY = 0; var preventPullToRefresh = false; $('body').on('touchstart'
  • AlarmManager在多个设备中不起作用(AlarmManager not working in several devices)
    问题 我的应用程序使用AlarmManager,并且自4年前就开始运行。 但是我注意到某些设备开始出现故障。 我非常确定代码是正确的(我正在将WakefulBroadcastReceiver和setExactAndAllowWhileIdle用于带有Doze的设备),因为它可以在Nexus设备上正常运行,但是在某些制造商的设备(华为,小米等)中却无法使用。 例如,华为设备具有一种杀死应用程序的电池管理器,当应用程序被终止时,预定的警报将被取消。 因此,在华为电池管理器中将应用设置为“受保护”即可解决该问题。 但是最近我注意到它不能在更多设备上使用:小米,三星(也许与新的“智能管理器”有关?)……这种行为似乎正在成为一种标准:杀死后台应用程序。 有人知道吗? 有什么方法可以确保触发警报? 编辑:此问题是由不同制造商添加的“节电器”引起的。 此处提供更多信息:https://dontkillmyapp.com/ 回答1 我已经在尝试解决几个星期了。 我什么都没找到。 华为会在一段时间后杀死所有警报。 如果我将应用程序放到电池保护程序中受保护的应用程序中,则无济于事。 但是,如果我将应用程序的程序包名称更改为包含闹钟,时钟或日历之类的字词,则它在任何其他设备上的运行都绝对正常。 我不知道Google如何提供这种废话的认证。 我认为OEM不应以这种方式修改核心平台。
  • 为横向模式的软键盘输入禁用全屏编辑视图?(Disabling the fullscreen editing view for soft keyboard input in landscape?)
    问题 在使用软键盘的Android设备上,我想防止在横向模式下出现全屏键盘编辑视图(如下所示)(即,我只希望看到软键盘本身以及背后的视图)。 我假设可以使用InputMethodService上的setExtractViewShown(false)方法来实现,但是我无法访问此方法的默认实例,也不想实现自定义输入法。 编辑添加:输入要进入的视图不是TextView (这是具有自定义InputConnection实现的View ),因此android:imeOptions="flagNoExtractUi"在这里不起作用。 回答1 我终于回答了我自己的问题: 可以在连接输入连接时禁用提取UI(即全屏编辑模式): @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI; // etc. } 回答2 为此,请导航至活动xml,然后在代码中粘贴android:imeOptions="flagNoExtractUi" 。 但是应该粘贴到哪里? 看一下示例活动xml的代码并看一下EditText: <?xml version="1.0" encoding="utf-8"?>
  • 在Chrome中禁用表单自动填充功能,而无需禁用自动完成功能(Disable form autofill in Chrome without disabling autocomplete [duplicate])
    问题 这个问题已经在这里有了答案: 禁用Chrome自动填充(68个答案) 3年前关闭。 我们如何在某些<input>上禁用Chrome的自动填充功能,以防止它们在页面加载时自动填充? 同时,我需要保持启用自动完成功能,因此用户仍然可以通过单击输入或输入内容来查看建议列表。 能做到吗? 编辑:如果您觉得有必要,可以随意使用普通的Javascript或jQuery,或者您觉得这会使您的解决方案更简单。 回答1 这是您想要的魔术: autocomplete="new-password" Chrome会故意忽略autocomplete="off"和autocomplete="false" 。 但是,他们将new-password作为特殊子句放入,以阻止自动填写新密码形式。 我在密码输入中输入了以上一行,现在我可以在表单中编辑其他字段,并且密码不会自动填写。 回答2 有点晚了,但这是我的傻瓜解决方案,对于诸如用户必须输入新密码的注册/注册页面之类的页面很有用。 <form method="post"> <input type="text" name="fname" id="firstname" x-autocompletetype="given-name" autocomplete="on"> <input type="text" name="lname" id="lastname" x
  • 禁用Firebase自动屏幕报告(Disabling firebase automatic screen reporting)
    问题 有没有办法禁用Firebase Analytics自动屏幕报告? 我有一些我不想被报告的UIViewCOntroller。 所以我想管理报告自我的屏幕。 将FirebaseAutomaticScreenReportingEnabled设置为NO无效 谢谢 回答1 对于2018年,您的Info.plist将具有以下条目: <key>FIREBASE_ANALYTICS_COLLECTION_ENABLED</key> <string>NO</string> <key>FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED</key> <string>YES</string> <key>FirebaseScreenReportingEnabled</key> <false/> 严重:出人意料的是,这是>>>您的<<< Info.plist。 不是Google添加的其他奇怪的plist! 有两个塑料人!!! 在这个答案中,我展示了2018年底所需的确切,新语法。 将您的列表编辑为“源”。 粘贴在上面。 如果您尝试在Xcode中使用便捷的“值输入”界面,则它将无法正常工作。 您最终将终于看到这个... 2019 ... 不幸的是,此操作的细节似乎不时在变化。 因此,尚不确定这种精确的程序是否在所有情况下以及在所有变体中仍然有效。 祝你好运! 回答2
  • 我该怎么办:这需要android.permission.INTERACT_ACROSS_USERS_FULL(What do I do about: this requires android.permission.INTERACT_ACROSS_USERS_FULL)
    问题 我正在努力将micode的开源指南针集成到我正在制作的应用程序中。 我想知道如何在清单中使用正确的拼写清楚地说明此错误,然后才能解决此权限错误。 我仍然需要我的许可。 这让我感到困惑... 11-03 13:53:58.241: E/AndroidRuntime(8975): Caused by: \ java.lang.SecurityException: Permission Denial: registerReceiver from \ net.micode.compass asks to run as user -1 but is calling from user 0; this \ requires android.permission.INTERACT_ACROSS_USERS_FULL 回答1 android.permission.INTERACT_ACROSS_USERS_FULL是签名级权限。 您的应用只有在与系统具有相同签名后才能使用。 回答2 我有一个同样的问题,我做了项目-> clean 。 现在可以使用了。 回答3 我知道已经有一个可以接受的答案,但是由于某种原因,它对我而言不起作用(或不再起作用)。 由于NDK是我的应用程序的一部分,因此我在Android SDK版本19及更低版本上发生了此错误。 我只是删除了与Android
  • 在Android中禁用EditText(Disabling of EditText in Android)
    问题 在我的应用程序中,我有一个EditText,该用户仅具有读取权限,而没有写入权限。 在代码中,我设置了android:enabled="false" 。 尽管EditText的背景变成了黑暗,但是当我单击它时,键盘会弹出,并且我可以更改文本。 我应该设置什么来禁用EditText? 回答1 我相信正确的方法是设置android:editable =“ false”。 而且,如果您想知道为什么我的链接指向TextView的属性,您的答案是因为EditText继承自TextView : EditText是TextView上的薄单板,可将其配置为可编辑的。 更新: 如以下注释中所述,不推荐使用editable (因为API级别3)。 您应该改为使用inputType(值为none )。 回答2 使用EditText.setFocusable(false)禁用编辑 EditText.setFocusableInTouchMode(true)启用编辑; 回答3 使用此功能禁用用户输入 android:focusable="false" android:editable =“ false”不推荐使用此方法。 回答4 您可以尝试以下方法: private void disableEditText(EditText editText) { editText.setFocusable
  • 在Android上长按时禁用上下文菜单(Disabling the context menu on long taps on Android)
    问题 我想禁用在我的Web应用程序中的图像上长按(触摸并按住)后出现的上下文菜单。 我见过关于如何做到这一点的不同想法,但似乎没有一个对我有用。 有没有办法通过HTML / CSS / Javascript在Android上执行此操作? 回答1 这应该适用于1.6或更高版本(如果我没记错的话)。 我不认为有1.5或更早版本的解决方法。 <!DOCTYPE html> <html> <head> <script> function absorbEvent_(event) { var e = event || window.event; e.preventDefault && e.preventDefault(); e.stopPropagation && e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false; } function preventLongPressMenu(node) { node.ontouchstart = absorbEvent_; node.ontouchmove = absorbEvent_; node.ontouchend = absorbEvent_; node.ontouchcancel = absorbEvent_; } function
  • 关于以编程方式启用和禁用移动数据的最新更新[重复](Latest update on enabling and disabling mobile data programmatically [duplicate])
    问题 这个问题已经在这里有了答案: Android L(5.x)以编程方式打开/关闭“移动数据” (2个答案) 6个月前关闭。 尽管这是“重复的”,但当前答案已过时,并且在大多数情况下不再适用。 我认为最好在这里提供更新的资源,以节省人们的时间,就像我刚才所做的那样,研究这个问题。 我一直在四处搜寻,以查看有关能够在应用程序中启用和禁用移动数据的最新信息(如果无法使用wifi)。 这是我可以找到的最新内容之一: 您知道您不能再从小部件上禁用/启用棒棒糖上的数据吗? 有一个答案,我引用: 从来没有一个API。 开发人员正在使用一种变通办法,方法是通过Reflections调用该方法。 Google所做的一切就是关闭这个“漏洞利用”。 还有这个讨论: 替换setMobileDataEnabled()API 2015年2月。 这里有这些问题: 如何在Android上禁用移动数据 这个问题是在2010年提出的,而最新的答案在2014年12月更新了一个。 以编程方式在Android中启用/禁用数据连接 这是2012年接受的答案。 关于这个问题的最新消息是什么? 还能做吗? 回答1 由于他们添加了MODIFY_PHONE_STATE权限检查,因此无法在非root用户的手机上MODIFY_PHONE_STATE 。 此权限仅授予此处参考的系统或签名应用程序。
  • adb服务器版本与此客户端不匹配(adb server version doesn't match this client)
    问题 每当我尝试运行adb devices : $ adb devices * daemon not running. starting it now * * daemon started successfully * List of devices attached HT0ANRV05740 device 它表示守护程序未运行,然后重新启动该守护程序。 然后,如果我再次运行adb设备,它将执行相同的操作- $ adb devices adb server is out of date. killing... * daemon started successfully * List of devices attached HT0ANRV05740 device 然后,如果我再次运行它,它将再次执行完全相同的操作- $ adb devices adb server is out of date. killing... * daemon started successfully * List of devices attached HT0ANRV05740 device 请帮忙!! 另外,我的DDMS不断给我以下消息- [2011-02-23 16:17:05 - DeviceMonitor]Adb connection Error:An existing connection was
  • 检测浏览器自动填充(Detecting Browser Autofill)
    问题 您如何判断浏览器是否自动填充了文本框? 尤其是带有用户名和密码框的用户,密码框会在页面加载时自动填充。 我的第一个问题是何时在页面加载序列中发生这种情况? 是在document.ready之前还是之后? 其次,我该如何使用逻辑来找出是否发生了这种情况? 它不是我想阻止这种情况发生,只是挂接到事件中。 最好是这样的: if (autoFilled == true) { } else { } 如果可能的话,我希望看到一个jsfiddle显示您的答案。 可能重复 浏览器密码自动填充的DOM事件? 浏览器自动填充和JavaScript触发的事件 -这两个问题都不能真正解释触发了什么事件,它们只是不断地重新检查文本框(不利于性能!)。 回答1 问题是自动填充由不同的浏览器以不同的方式处理。 有些派遣变更事件,有些则没有。 因此,几乎不可能挂接在浏览器自动完成输入字段时触发的事件。 更改不同浏览器的事件触发器: 对于用户名/密码字段: Firefox 4,IE 7和IE 8不会调度change事件。 Safari 5和Chrome 9确实会调度更改事件。 对于其他表单字段: IE 7和IE 8不会调度change事件。 当用户从建议列表中选择一个值并跳出字段时,Firefox 4确实调度了更改更改事件。 Chrome 9不会调度更改事件。 Safari 5确实调度了change事件。
  • 自动完成关闭与错误?(Autocomplete off vs false?)
    问题 最近,我遇到了一个问题,我想在所有浏览器中禁用自动完成功能。 Chrome在设置中具有一项新功能,您可以在其中添加卡号。 并且要求也禁用该功能。 在所有浏览器中起作用的是在表单级别执行此autocomplete=false 。 但这不符合w3规则,在w3规则中,它们强制具有autocomplete=off|on 。 有人可以向我解释为什么false在所有浏览器中都有效吗? 甚至ie8,所有的Firefox,safari等,但都不符合要求。 回答1 你是对的。 将autocomplete属性设置为“ off”不会在最新版本的Chrome中禁用Chrome自动填充。 但是,您可以将自动填充设置为除“开”或“关”以外的任何内容(“假”,“真”,“不填充”),这将禁用Chrome自动填充。 此行为可能是因为autocomplete属性期望的值为“ on”或“ off”,并且如果您给它其他东西,则什么也不做。 因此,如果您给这些值以外的其他值,则自动填充功能会崩溃/不执行任何操作。 在当前版本的Chrome中,已经发现将autocomplete属性设置为“ off”实际上可以正常工作。 另外,我发现只有在表单的每个<input>标记中设置autocomplete属性时,此方法才有效。 在此处的Chromium错误列表中已经对此歧义做出了回应。 免责声明:在Chrome 47.0