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();
}