我对 Android 和 Java 还很陌生,但我正在通过观看教程和提出问题来积极学习。截至目前,我正在通过在 Android Studio 中编写自己的应用程序来练习。我想从更艰难的事情开始。那么,让我向大家解释一下该应用程序的用途。我希望最终产品显示一个用户界面(显然),屏幕中间有一个按钮,上面写着“更改值”。但这对我来说并不是困难的部分。我已经设置了令我满意的用户界面。然而,我正在努力解决的部分是 Java 部分。通过我的研究,我找不到任何与我想要实现的目标相关的内容。
我想要做的是检查位于 Android 设置数据库的全局表(“adb_enabled”)中的字符串的值,如果已启用(“1”),则将其更改为(“0”)。我看过有关如何更改亮度和获取当前时间的指南,但它们对我帮助不大。
这是我的引用代码:
Settings.Global.putInt( getContentResolver() ,
Settings.Global.LOCKSCREEN_AD_ENABLED , 0 );
执行上面的代码时,我收到以下错误:错误:找不到符号变量LOCKSCREEN_AD_ENABLED
。有谁知道我该如何解决上述错误?谢谢!
最佳答案
如果您的应用是系统应用,您可以在系统设置中进行更改。非系统应用程序,即安装在数据分区中的应用程序无法修改系统设置。非系统应用只能使用 Intent 或系统 UI 来打开修改设置。
来自官方documentation :
Global system settings, containing preferences that always apply identically to all defined users. Applications can read these but are not allowed to write; like the "Secure" settings, these are for preferences that the user must explicitly modify through the system UI or specialized APIs for those values.
如果您的应用是系统应用,那么您可以使用以下代码进行更改(仅适用于系统应用):
int adb = 0;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
adb = Settings.Global.getInt(getApplicationContext().getContentResolver(),
Settings.Global.ADB_ENABLED, 0);
}
// toggle the USB debugging setting
adb = adb == 0 ? 1 : 0;
Settings.Secure.putInt(getApplicationContext().getContentResolver(),
Settings.Secure.ADB_ENABLED, adb);
将以下权限添加到AndroidManifest.xml
:
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"></uses-permission>
关于java - 获取系统设置的当前值并根据需要更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51938707/