Android 设置密码文本是否暂时显示字符

Android 设置密码文本是否暂时显示字符

本文指的是Edittext为密码类型的字符串的控制显示。
比如密码字符串默认可以短暂显示,需要按下后不显示,那是可以控制的。

一、效果

系统Setting 隐私权中是有开关控制的,如下图所示:
在这里插入图片描述

具体效果,如下:
默认(短暂显示密码字符串)效果和设置不显示密码类型字符串效果,如下:

在这里插入图片描述

二、实现

1、设置和获取密码是否可见

实现其实很简单,如下代码即可:

//设置密码是否短暂可见
public void setIsShowPasswordChecked(boolean isChecked) {
    Settings.System.putInt(mContext.getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD,isChecked ? 1 : 0);
}

//获取密码是否短暂可见
public boolean isShowPasswordShortTime() {
    return 1 == Settings.System.getInt(mContext.getContentResolver(), Settings.System.TEXT_SHOW_PASSWORD, 1);
}

获取属性值是不需要权限的,但是设置Settings属性值是需要权限的

<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />

该权限是系统权限,需要系统应用才能得到。

2、实际修改的Settings的属性

从Settings.java 代码看:

/**
* Setting to showing password characters in text editors. 1 = On, 0 = Off
*/
public static final String TEXT_SHOW_PASSWORD = "show_password";

3、adb控制密码是否短暂可见

所以adb 也可以控制:

//获取是否设置密码短暂显示(默认/未设置前为null)
adb shell settings get system show_password

//设置密码短暂显示
adb shell settings put system show_password 1

//设置密码不短暂显示
adb shell settings put system show_password 0

至于为啥修改一个属性,就能马上起作用,应该是系统有地方监听了Settings.System.TEXT_SHOW_PASSWORD值的改变做了相关操作;
但是具体是系统哪里的代码,这就不知道了!喜欢研究的可以看看。

并且为啥EditText设置属性android:inputType=“textPassword”,
就可以显示*代替字符串,也是可以研究的,按道理是EditText/View的处理,但是里面真的有具体的逻辑吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值