目前在某为,小蓝小绿手机上存在验证码安全保护的功能,该功能开启时可能会导致应用自动读取验证码内容的失败,具体页面如下:
该页面无法通过Intent跳转,(某为是这样,小蓝小绿没试过估计也是),通过AndroidManifest.xml分析发现此Activity设置的permission,而此权限是signatureOrSystem级别,因此普通APP无法在AndroidManifest.xml声明。APP在开发的时候只能提醒用户手机关闭它。
那怎么判断它是否开启?这个开关其实在系统中对应的是一个属性,所以只需要判断改值是1或者0就行了。
首先注册Observer(在Service中注册),获取变化的uri:
getContentResolver().registerContentObserver(Uri.parse("content://settings/system"), true, new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange, @Nullable Uri uri) {
super.onChange(selfChange, uri);
Log.d(TAG, "onChange: " + uri);
}
});
然后手动开启,关闭验证码安全保护开关,可以通过log发现:
可以发现verifition_sms_protect_enable这个值不停的变化,通过Settings.System.getInt直接获取,可以发现开启关闭开关时值也会在0和1之间转换。
小绿小蓝的值不同,但是结果也一样。
demo地址:https://download.csdn.net/download/weixin_45253393/13507749