要使 SystemProperties.set 正常工作,需要哪些 linux 权限? (安卓)
我正在编写一个在 Android 设备上的系统/应用程序中运行的应用程序。
它正在运行
android:sharedUserId="android.uid.systemui"
在 Android.mk 中
LOCAL_CERTIFICATE := platform
但是,我发现我无法创建、写入或设置属性。 在控制台中,我可以执行 getprop、setprop。 但是,我的程序无法创建它。
ls -l /data/property/
表示不存在
Slog.d(TAG, "key is not set, will set APPLE");
SystemProperties.set(keyName, favorite);
if(SystemProperties.get(keyName).equals(favorite)) {
Slog.d(TAG, keyName + " = " + SystemProperties.get(keyName));
} else {
Slog.e(TAG, "setting SystemProperties failed. value written = " + SystemProperties.get(keyName));
}
日志:
Line 1365: D/MyTag( 2593): keyName: persist.fruit.user.favorite
Line 1373: D/MyTag( 2593): keyName has value []
Line 1377: D/MyTag( 2593): key is not set, will set APPLE
Line 1381: E/MyTag( 2593): setting SystemProperties failed. value written =
显然这可能是权限不足的问题 - 但哪些权限不足?
最佳答案
我接受了 fadden 的答案,但经过更多探索后发现它是不正确的,但它对获得正确答案很有帮助。
第一步: 查看 https://android.googlesource.com/platform/system/core/+/kitkat-release/init/property_service.c 中的数组
{ "persist.sys.", AID_SYSTEM, 0 },
您的属性名称应以数组中相同的键字符串开头。 因此我不得不将我的属性名称更改为“persist.sys.fruit.user.favorite”
第 2 步: 在您的 android list 文件中,以上面数组中提到的用户 ID 运行。
<manifest android:sharedUserId="android.uid.system" >
关于android - SystemProperties.set 需要什么 linux 权限才能工作? (安卓),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27611738/