Android 9.0 中Settings.System的使用(安卓系统全局变量)

在安卓系统开发的过程中,常常需要写一下标志位来保存数据。通常会使用sharepreferences来写数据,但是存在一个问题,如果用户在setting中清除应用数据的话,相应的标志位也会被清除。这里我们提供一种写在系统里面标志位(系统全局变量)的方法。

一、在系统中添加自定义字段

第一步:

/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

class DatabaseHelper extends SQLiteOpenHelper{
//声明变量
private static final String SYSTEM_UI_ICON_SHOW = "system_ui_icon_show";
}


 private void loadSystemSettings(SQLiteDatabase db) {
//添加下面的方法
loadStringSetting(stmt, SYSTEM_UI_ICON_SHOW, R.string.quick_settings_tiles_default_show_framework);
}

第二步:

/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<!--要写的数据-->
<string name="quick_settings_tiles_default_show_framework">wifi,location,cell,hotspot,sound,nfc,bt,rotation,airplane,screenshot,flashlight,more
        </string>

很方便我们就写好了标志位,下面说一下如何读写相应的数据。

//这样很方便的话就可以获取系统中的数据,读数据
String show_new= Settings.System.getString(getContext().getContentResolver(),"system_ui_icon_show");
        Log.e("whxwhx", "show_new" + show_new);

//写数据showStr
 Settings.System.putString(mContext.getContentResolver(), "system_ui_icon_show",showStr);

这样很方便我们就在系统中创建了一个标志位。这种方法的标志位使用还是很常见的。上面只提供了String的相应操作的方法,int什么的都是一样的。

温馨提醒,如果是MTK平台的代码

vendor/mediatek/proprietary/packages/apps/SettingsProvider 里面去创建这个标志位。

因为在mk文件中我们可以看见下面的语句,使用MtkSettingsProvider去覆盖系统中的SettingsProvider。

LOCAL_PACKAGE_NAME := MtkSettingsProvider
LOCAL_OVERRIDES_PACKAGES := SettingsProvider

二、注意

如果实在普通的app中使用并修改某个值的时候,还应该注意要动态申请权限。

//申请权限
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (!Settings.System.canWrite(MainActivity.this)) {
                Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
                intent.setData(Uri.parse("package:" + MainActivity.this.getPackageName()));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }
        }

还有一个权限

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

在获取到权限以后,我们就可以修改系统中的默认值,例如修改亮度。

private static final int MIN_SCREEN_TIMEOUT_VALUE = 15000;

//修改系统灭屏时间为15秒
Settings.System.putInt(getApplicationContext().getContentResolver(),
                    "screen_off_timeout", MIN_SCREEN_TIMEOUT_VALUE);

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 9.0是一种基于Linux内核的开源移动操作系统,它可以运行在手机、平板电脑、智能手表等设备上。其的“framework”即是Android应用程序框架,提供了基础的API以及一些高级的功能。如果需要在Android开发使用这些API和功能,可以下载并引用“framework.jar”。 要下载Android 9.0的“framework.jar”,首先需要安装并配置好Android开发环境,安装Android Studio并下载对应版本的Android SDK。然后,在Android SDK Manager下载该版本的Android的SDK(Software Development Kit)。选择“SDK Tools”并勾选“Android SDK Build-Tools”和“Android SDK Platform-Tools”等必要组件。完成这些后,就可以开始下载framework.jar了。 接下来,通过以下步骤下载: 1. 从GitHub网站上下载开源代码,找到对应的分支和版本。例如,下载Android 9.0的分支:https://github.com/aosp-mirror/platform_frameworks_base/tree/android-9.0.0_r8。 2. 在下载的代码目录下,运行以下命令,生成framework.jar文件: 1)make update-api:更新API 2)make -j16 framework:生成framework.jar 3. 在“out/target/common/obj/JAVA_LIBRARIES/framework_intermediates”目录下,会生成framework.jar文件,复制到自己的项目使用。 总之,下载Android 9.0的“framework.jar”需要先安装和配置好Android开发环境,然后从GitHub上下载并生成。通过这种方式,可以在自己的Android项目使用这些高级API和功能,提升开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值