【Android】SettingsPreferenceService

发布于:2025-05-01 ⋅ 阅读:(20) ⋅ 点赞:(0)

一,概述

AndroidSDK36平台,新增了SettingsPreferenceService类,位于SDK中android.service.settings.preferences下,主要作用是提供系统应用对系统设置的交互,包括读取、设置系统设置的偏好能力

整体架构图如下

该功能组件如下,采用CS架构,通过binder实现与设置的通信

客户端API集成在SettingsPreferenceServiceClient类中,目前提供了三个公开接口,

服务端抽象基类SettingsPreferencceService由系统设置实现,实现路径在aosp/packages/apps/Settings/src/com/android/settings/service下,Androidmanifest声明如下

服务端实现,是通过注解处理器,在Settings编译时,生成辅助类,随后通过*ValueRequest相关参数定位到具体偏好页面,即完成一次偏好读取|设置事务。

二,实例

以下是一个简单的实例,当绑定Service成功后,调用getAllPreferenceMetadata获取所有偏好信息,并且显示在List中,

package com.example.myapplication;

import static android.service.settings.preferences.SettingsPreferenceValue.TYPE_BOOLEAN;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.OutcomeReceiver;
import android.service.settings.preferences.GetValueRequest;
import android.service.settings.preferences.GetValueResult;
import android.service.settings.preferences.MetadataRequest;
import android.service.settings.preferences.MetadataResult;
import android.service.settings.preferences.SetValueRequest;
import android.service.settings.preferences.SetValueResult;
import android.service.settings.preferences.SettingsPreferenceMetadata;
import android.service.settings.preferences.SettingsPreferenceServiceClient;
import android.service.settings.preferences.SettingsPreferenceValue;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.activity.ComponentActivity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@SuppressLint("NewApi")
public class SettingsPreferenceServiceDemoActivity extends ComponentActivity {

    private static final String TAG = "SettingsPreferenceServiceDemoActivity";

    private boolean isConnect = false;

    private ExecutorServi

网站公告

今日签到

点亮在社区的每一天
去签到