本机属性设置方法的android问题

本机属性设置方法的android问题,android,Android,我正在尝试使用jni从java应用程序使用本机property_set方法。我可以从属性中读取值,但无法设置它。我错过什么了吗?我需要特殊权利吗 #include <cutils/properties.h> char key[PROPERTY_KEY_MAX]; char value[PROPERTY_VALUE_MAX]; strncpy(key, "test.rate", PROPERTY_KEY_MAX); property_get(key,

我正在尝试使用jni从java应用程序使用本机property_set方法。我可以从属性中读取值,但无法设置它。我错过什么了吗?我需要特殊权利吗

#include <cutils/properties.h>

    char key[PROPERTY_KEY_MAX];
    char value[PROPERTY_VALUE_MAX];

    strncpy(key, "test.rate", PROPERTY_KEY_MAX);
    property_get(key, value, "");
    int rate = 0;
    rate = atoi(value);
    TRACE("####### Got %d from property test.rate", rate);

    strncpy(value, "15", PROPERTY_VALUE_MAX);
    int ret = property_set(key, value);
    TRACE("####### property_set(%s)for test.rate, retVal=%d",value, ret);

    property_get(key, value, "");
    rate = atoi(value);
    TRACE("####### Got %d from property test.rate", rate);
#包括
字符键[PROPERTY_key_MAX];
字符值[属性值最大];
strncpy(键,“测试速率”,属性键最大值);
属性(键,值,“”);
积分率=0;
速率=atoi(值);
跟踪(“从属性测试中获得%d.rate”,rate);
strncpy(价值,“15”,财产价值最大值);
int ret=属性集(键、值);
跟踪(“test.rate的属性集(%s),retVal=%d”,值,ret);
属性(键,值,“”);
速率=atoi(值);
跟踪(“从属性测试中获得%d.rate”,rate);
返回:

从属性测试中得到20。比率

test.rate的属性集(15),retVal=0


从属性测试中获得20。rate

要设置属性,您的进程应该可以访问该特定类型的属性。您通常会在内核日志中看到这些权限错误。当我们在用户空间/JNI执行此设置时,大多数时候都会错过看到内核日志的机会,并且在用户空间logcat处会出现错误。 您可以查看内核日志,我确信它应该抛出一些错误


这通常在
system/core/init/property\u service.c
中进行控制,该结构用于向属性变量添加权限。将留待您进一步解决。

此问题是由于属性集延迟造成的。等待1秒钟,然后获取属性。您将获得新的设置值