Android 设置密码文本是否暂时显示字符
Posted 峥嵘life
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的处理,但是里面真的有具体的逻辑吗?
以上是关于Android 设置密码文本是否暂时显示字符的主要内容,如果未能解决你的问题,请参考以下文章