Android里SystemProperties.set("ctl.start", " ")不能开启服务,程序用的是ROOT权限,系统是4.0的。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android里SystemProperties.set("ctl.start", " ")不能开启服务,程序用的是ROOT权限,系统是4.0的。相关的知识,希望对你有一定的参考价值。

参考技术A

估计是ROOT没有授权,造成服务不能开启。

建议测试Root是否有效,最直接有效的方式就是执行su命令,su就是切换到root用户,如果su命令可以执行,限则表示root成功。

具体测试方式:

    安装进入adb目录(SDK中自带adb)

    adb shell 进入shell模式

    su 切换到root用户

    切换到root用户后会显示一个#号

    或直接在android 版本的 shell (附件)中执行命令


Android的系统属性SystemProperties

 

创建与修改android属性用Systemproperties.set(name, value)

获取android属性用Systemproperties.get(name)

注意:android属性的名称是有一定的格式要求的,如下:前缀必须用system\core\init\property_service.c中定义的前缀,进行系统属性设置的程序也必须有system或root权限

 

提升到system权限的方法:

1、在AndroidManifest.xml中,在manifest加入android:sharedUserId="android.uid.system"

2、在Android.mk中,將LOCAL_CERTIFICATE := XXX修改成LOCAL_CERTIFICATE :=platform

 

Android 的系统属性包括两部分:文件保存的持久属性和每次开机导入的cache属性。

前者主要保存在下面几个文件中:

bionic/libc/include/sys/_system_properties.h

#define PROP_SERVICE_NAME "property_service"
#define PROP_PATH_RAMDISK_DEFAULT  "/default.prop"
#define PROP_PATH_SYSTEM_BUILD     "/system/build.prop"
#define PROP_PATH_SYSTEM_DEFAULT   "/system/default.prop"
#define PROP_PATH_LOCAL_OVERRIDE   "/data/local.prop"

后者则通过frameworks/base/core/java/android/os/SystemProperties.java的接口定义,

private static native String native_get(String key);
    private static native String native_get(String key, String def);
     private static native void native_set(String key, String def);
    public static void set(String key, String val) {
         if (key.length() > PROP_NAME_MAX) {
          throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);
       }
       if (val != null && val.length() > PROP_VALUE_MAX) {
         throw new IllegalArgumentException("val.length > " +
         PROP_VALUE_MAX);
}
  native_set(key, val);
}

 

ADB设置系统属性和获取系统属性的命令如下(adb需要有root权限才能设置成功):

adb shell setprop persist.panel.orientation 90

adb shell getprop persist.panel.orientation

 

以上是关于Android里SystemProperties.set("ctl.start", " ")不能开启服务,程序用的是ROOT权限,系统是4.0的。的主要内容,如果未能解决你的问题,请参考以下文章

Android SystemProperties系统属性详解

Android的系统属性SystemProperties

Android 反射调用SystemProperties

Android 反射调用SystemProperties

个人记录解决android studio导入SystemProperties

个人记录解决android studio导入SystemProperties