android 修改记录

本文详细介绍了如何在Android系统中进行各种配置修改,包括Settings system字段的添加与初始化、KeyguardViewMediator的超时设置、按键解锁行为的调整、系统目录权限管理、系统服务的启动与停止、文件权限的默认设定以及动态权限申请等关键操作。同时,涉及到动画效果关闭、界面高亮参数调整以及按键转发的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Settings system 里添加字段并且在SettingProvider里初始化

frameworks/base/core/java/android/provider/Settings.java

最好在system表里其他字段的附近加

public static final String DEFAULT_ISQCHATING = "isQchating";

public static final String[] SETTINGS_TO_BACKUP = {}

里添加DEFAULT_ISQCHATING,

DatabaseHelper.java, private void loadSystemSettings(SQLiteDatabase db)添加

loadIntegerSetting(stmt, Settings.System.DEFAULT_ISQCHATING,

R.integer.def_isQcharing);

 

KeyguardViewMediator.java 超时灭屏延时锁屏时间

KEYGUARD_LOCK_AFTER_DELAY_DEFAULT

 

修改其他按键解锁:

SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java

dispatchKeyEvent()

修改menu键是否能解锁:

Keyguard/res/values/config.xml

config_disableMenuKeyInLockScreen

 

/system/app , /system/priv-app

手机system目录下有两个文件夹:app和priv-app,手机被root后,通过adb push可以把apk推到这两个目录,作为系统apk用户无法删除。 

它们的区别在于,priv-app中的service是不能被kill掉的,就算通过adb kill掉后系统会重新拉起, 普通应用放入priv-app下可以默认获得一些系统权限,如往settings里写键值

 

GT22Launcher import SystemProperties包 编译报错找不到符号。

删除Android.mk中的LOCAL_SDK_VERSION := current , 该变量表示应用只使用标准的SDK接口

 

SystemProperties

/default.prop

/system/build.prop

/system/default.prop

/data/local.prop

属性将会以上述顺序加载。后加载的属性将覆盖原先的值。这些属性加载之后,最后加载的属性会被保持在/data/property中。

特别属性 如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。

如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。

如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名。(这是很巧妙的。 netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)

属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。

每一项服务必须在/init.rc中定义.系统启动时,与init守护进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中 。客户端应用程序可以轮询那个属性值,以确定结果

system/core/init/property_service.c 里定义哪些uid或gid能对哪种属性有读写权限, persist.sys.apk 是system能读写

 

默认的一些文件权限

system/core/include/private/android_filesystem_config.h

--- a/android/device/qcom/common/rootdir/etc/init.qcom.rc

+++ b/android/device/qcom/common/rootdir/etc/init.qcom.rc

@@ -189,6 +189,9 @@ on boot

# Socket location for RIDL

mkdir /dev/socket/RIDL 2770 system system

+

+ chmod 0777 /data/property

+ chmod 0777 /data

 

diff --git a/android/external/sepolicy/app.te b/android/external/sepolicy/app.te

index 395fc2b..fd99325 100644

--- a/android/external/sepolicy/app.te

+++ b/android/external/sepolicy/app.te

@@ -202,7 +202,7 @@ use_keystore(appdomain)

# Superuser capabilities.

# bluetooth requires net_admin and wake_alarm.

-neverallow { appdomain -bluetooth } self:capability *;

+neverallow { appdomain -bluetooth -shell } self:capability *;

neverallow { appdomain -bluetooth } self:capability2 *;

# Block device access.

diff --git a/android/external/sepolicy/domain.te b/android/external/sepolicy/domain.te

index 901a441..aa33427 100755

--- a/android/external/sepolicy/domain.te

+++ b/android/external/sepolicy/domain.te

@@ -286,7 +286,7 @@ neverallow {

} { fs_type -rootfs }:file execute;

# Only the init property service should write to /data/property.

-neverallow { domain -init } property_data_file:dir { create setattr relabelfrom rename write add_name remove_name rmdir };

+#neverallow { domain -init } property_data_file:dir { create setattr relabelfrom rename write add_name remove_name rmdir };

neverallow { domain -init } property_data_file:file { create setattr relabelfrom write append unlink link rename };

 

index 5a774ef..a39c209 100755

--- a/android/system/core/include/private/android_filesystem_config.h

+++ b/android/system/core/include/private/android_filesystem_config.h

@@ -257,7 +257,7 @@ static const struct fs_path_config android_files[] = {

/* the following five files are INTENTIONALLY set-uid, but they

* are NOT included on user builds. */

- { 04750, AID_ROOT, AID_SHELL, 0, "system/xbin/su" },

+ { 04755, AID_ROOT, AID_SHELL, 0, "system/xbin/su" },

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/librank" },

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/procrank" },

{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/procmem" },

diff --git a/android/system/extras/su/Android.mk b/android/system/extras/su/Android.mk

index 17e2e03..7bbf3d1 100644

--- a/android/system/extras/su/Android.mk

+++ b/android/system/extras/su/Android.mk

@@ -10,6 +10,5 @@ LOCAL_FORCE_STATIC_EXECUTABLE := true

LOCAL_STATIC_LIBRARIES := libc

LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)

-LOCAL_MODULE_TAGS := user

 

frameworks/base/data/keyboards/Generic.kl getevent的键值对应

 

关闭全局的动画效果

Settings.Global.putFloat(mContext.getContentResolver(),

Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting);

Settings.Global.putFloat(mContext.getContentResolver(),

Settings.Global.TRANSITION_ANIMATION_SCALE,

mTransitionAnimationScaleSetting);

Settings.Global.putFloat(mContext.getContentResolver(),

Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting);

 

android6.0 动态权限申请框

/media/archer/HardDisk/Src/K818H/LINUX/android/packages/apps/PackageInstaller/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java

GrantPermissionsDefaultViewHandler.java

 

android6.0原生风格的在控件获取焦点的时候,显示颜色比较淡,在某些屏亮度大的时候看不清。需要在frameworks/base/core/res/res/values/colors_material.xml中修改一下参数。

 

-    <item name="highlight_alpha_material_light" format="float" type="dimen">0.12</item>

-    <item name="highlight_alpha_material_dark" format="float" type="dimen">0.20</item>

+    <item name="highlight_alpha_material_light" format="float" type="dimen">0.42</item>

+    <item name="highlight_alpha_material_dark" format="float" type="dimen">0.70</item>

 

转发按键

import android.app.Instrumentation;

private void sendKeyCode2(final int keyCode) {

new Thread(new Runnable() {

@Override

public void run() {

try {

// 创建一个Instrumentation对象9

Instrumentation inst = new Instrumentation();

// 调用inst对象的按键模拟方法

inst.sendKeyDownUpSync(keyCode);

} catch (Exception e) {

e.printStackTrace();

}

}

}).start();

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值