栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android11增加虚拟键盘开关

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android11增加虚拟键盘开关

文章目录
    • 一、概述
    • 二、增加在语言与输入法中的虚拟键盘开关
      • 2.1 增加按键
      • 2.2 增加按键的功能代码
      • 2.3 增加按键字符串
    • 三、加载到setting中

一、概述

Android11导航栏右下方本来就有虚拟键盘的开关,但是在隐藏导航栏的情况下,无法显示出来。

查询源码发现虚拟键盘的开关由变量Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD决定

二、增加在语言与输入法中的虚拟键盘开关 2.1 增加按键

packages/app/Settings/res/xml/language_and_input.xml


2.2 增加按键的功能代码

新建文件 packages/app/Settings/src/com/android/settings/inputmethod/VirtualKeyboardHidePreferenceController.java

package com.android.settings.inputmethod;

import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.icu.text.ListFormatter;
import android.text.BidiFormatter;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import androidx.preference.SwitchPreference;
import androidx.preference.Preference;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import android.content.Intent;

import java.util.ArrayList;
import java.util.List;

public class VirtualKeyboardHidePreferenceController extends AbstractPreferenceController  implements
    PreferenceControllerMixin, Preference.OnPreferenceChangeListener{

    private static final String KEY_HIDE_VIRTUAL_KERYBOARD= "hide_virtual_keyboard";

    public VirtualKeyboardHidePreferenceController(Context context) {
        super(context);
    }
 
    @Override
    public String getPreferenceKey() {
        return KEY_HIDE_VIRTUAL_KERYBOARD;
    }
 
    @Override
    public boolean isAvailable() {
        return true;
    }

    @Override
    public void updateState(Preference preference) {
        int value = Settings.Secure.getInt(
                mContext.getContentResolver(), Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0);
        ((SwitchPreference) preference).setChecked(value == 0);
    }


    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        boolean value = (Boolean) newValue;
		
        if (value) {
            Settings.Secure.putInt(
                mContext.getContentResolver(), Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 0);
        } else {
            Settings.Secure.putInt(
                mContext.getContentResolver(), Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD, 1);
        }

        return true;
    }
}
2.3 增加按键字符串

packages/app/Settings/res/values/strings.xml

 Hide Virtual Keyboard

packages/app/Settings/res/values-zh-rCN/strings.xml


    隐藏虚拟键盘
三、加载到setting中

packages/app/Settings/src/com/android/settings

import com.android.settings.inputmethod.VirtualKeyboardHidePreferenceController;

controllers.add(new VirtualKeyboardHidePreferenceController(context));
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847845.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号