这个问题是几乎公开的
Android App: how to read Font Size under Settings?我读了
CommonsWare的答案,它指向使用Settings.System.FONT_SCALE.所以我写了几行:
float scale = -66.6f; try { scale = android.provider.Settings.System.getFloat(getContentResolver(),android.provider.Settings.System.FONT_SCALE); } catch(SettingNotFoundException e) { Log.e(getClass().getSimpleName(),"Error: ",e); } Toast.makeText(this,"scale=" + scale,Toast.LENGTH_LONG).show();
我的问题是我总是得到SettingNotFoundException我正在使用一个Android 4.2.2设备.顺便说一句,我的代码是一个活动的onCreate回调.
我也去搜索这个问题,发现有3个网站使用相同的代码.是否需要特殊许可?我也试过android.permission.WRITE_SETTINGS的权限没有成功.
解决方法
我刚才在源代码中找到了这个
Settings.System
这个功能:
/** @hide */ public static void getConfigurationForUser(ContentResolver cr,Configuration outConfig,int userHandle) { outConfig.fontScale = Settings.System.getFloatForUser( cr,FONT_SCALE,outConfig.fontScale,userHandle); if (outConfig.fontScale < 0) { outConfig.fontScale = 1; } }
但是使用FONT_SCALE,所以我检查了文档指向getResources().getConfiguration()的Configuration
类.所以我cound修复我的代码使用:
float scale = getResources().getConfiguration().fontScale;