如何通过Java代码设置三星设备Touch sensitivity并关闭Accidental touch protection?
三星设备触摸灵敏度与防误触设置的代码处理方案
一、为啥没法直接用代码修改这两个设置
- 这俩都是三星定制的系统级设置,Android官方没给第三方应用开放直接修改的API,要改得拿系统级权限,普通应用根本拿不到,只有系统自带的应用或者通过ADB调试才能弄,没法用到正常上架的APP里。
- 而且三星这两个选项是专属定制的,没有统一的系统设置常量对应,没法用Android自带的
Settings类直接操作。
二、引导用户手动去设置页的代码方案
虽然不能直接改,但可以写代码跳转到对应的设置页面,让用户自己操作,下面是具体实现:
1. 跳转到触摸灵敏度设置页
三星的触摸灵敏度一般在「显示」设置里,不同机型页面组件可能不一样,试试这段代码:
try { Intent intent = new Intent(); intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.display.TouchSensitivitySettings")); startActivity(intent); } catch (ActivityNotFoundException e) { // 找不到页面就跳去显示设置主页面 startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS)); }
2. 跳转到防误触保护设置页
防误触通常在「高级功能」或者「显示」里,代码如下:
try { Intent intent = new Intent(); intent.setComponent(new ComponentName("com.android.settings", "com.android.settings.accessibility.AccidentalTouchProtectionSettings")); startActivity(intent); } catch (ActivityNotFoundException e) { // 找不到就跳去高级功能设置页 Intent fallbackIntent = new Intent(); fallbackIntent.setComponent(new ComponentName("com.android.settings", "com.android.settings.Settings$AdvancedFeaturesSettingsActivity")); startActivity(fallbackIntent); }
注意点
- 不同One UI版本的三星手机,设置页面的组件可能不一样,所以一定要加异常捕获,避免APP崩溃。
- 也可以先检查目标页面是否存在再跳转,代码示例:
PackageManager pm = getPackageManager(); ComponentName touchSensitivityComponent = new ComponentName("com.android.settings", "com.android.settings.display.TouchSensitivitySettings"); if (pm.resolveActivity(new Intent().setComponent(touchSensitivityComponent), PackageManager.MATCH_DEFAULT_ONLY) != null) { startActivity(new Intent().setComponent(touchSensitivityComponent)); } else { startActivity(new Intent(Settings.ACTION_DISPLAY_SETTINGS)); }
三、额外优化建议
要是跳转不太顺利,还可以在APP里做这些操作:
- 首次启动或者检测到是三星设备时,弹个弹窗告诉用户需要开启「触摸灵敏度」、关闭「防误触保护」,再写清楚步骤(比如:设置→显示→触摸灵敏度;设置→高级功能→防误触保护)。
- 判断三星设备的代码:
if ("samsung".equalsIgnoreCase(Build.MANUFACTURER)) { // 显示专属引导提示 }
内容的提问来源于stack exchange,提问作者Ali Nato
相关产品推荐
相关产品推荐

