JNI读取系统属性

1、添加头文件
#include <sys/system_properties.h>

2、使用
char value[PROP_VALUE_MAX] = {0};
int ret = __system_property_get(“ro.product.”, value);

__system_property_set(key, value);

3、在Android.mk中添加依赖库
LOCAL_SHARED_LIBRARIES := libcutils

在Android中,JNI (Java Native Interface) 允许Java代码和C/C++代码之间进行交互。如果你想要通过JNI从Java访问System Properties(系统属性),你可以按照以下步骤操作: 1. **包含头文件**: 首先,在C/C++代码中,你需要包含`android/system/Os.h` 和 `android/log.h` 来获取必要的函数声明。 2. **注册Native方法**: 在Java端,你需要在`.java` 文件中声明一个native方法,通常命名为`getSystemProperty`,并指定返回类型(如`String`)。 ```java public native String getSystemProperty(String key); ``` 3. **编写JNI代码**: 创建一个`.cpp` 或 `.cc` 文件,编写实际的JNI方法实现。这将涉及找到`SystemProperties`对象,并使用它的`getString()` 方法获取值。 ```c++ #include "JniHelper.h" #include <android/log.h> extern "C" JNIEXPORT jstring JNICALL Java_com_your_package_Name_getSystemProperty(JNIEnv *env, jobject thisObj, jstring keyStr) { const char* key = env->GetStringUTFChars(keyStr, NULL); const char* value = SystemProperties::getString(key, "default_value"); // 将值转换为本地字符串,然后释放keyStr的内存 jstring result = env->NewStringUTF(value); env->ReleaseStringUTFChars(keyStr, key); if (result == nullptr) { __android_log_print(ANDROID_LOG_ERROR, "YourTag", "Error getting system property"); return nullptr; } return result; } ``` 4. **链接和注册**: 编译JNI代码生成对应的共享库(`.so`),并在Android.mk或build.gradle文件中添加相关的jniLibs依赖,并注册你的native方法。 5. **使用Native方法**: 现在,从Java应用程序,你可以像这样调用这个方法来获取System Property: ```java String sysPropValue = getSystemProperty("your_key"); if (sysPropValue != null) { Log.d("YourTag", "System property: " + sysPropValue); } else { Log.e("YourTag", "Failed to get system property"); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值