gpt4 book ai didi

android - 无法在 Android 中使用反射或 Linux 命令 exec 在 Android 中设置系统属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:01:53 34 4
gpt4 key购买 nike

我需要设置并获取名为“persist.sys.aabbcc”的系统属性。我能够使用 adb shell 命令读取/写入值,如下所示:

adb shell setprop persist.sys.aabbcc 123456

和:

adb shell getprop persist.sys.aabbcc 
123456

我还可以使用反射在 java Android 中读取此属性:

        @SuppressWarnings("rawtypes")
Class SystemProperties = Class.forName("android.os.SystemProperties");

//Parameters Types
@SuppressWarnings("rawtypes")
Class[] paramTypes = new Class[1];
paramTypes[0] = String.class;

Method get = SystemProperties.getMethod("get", paramTypes);

//Parameters
Object[] params = new Object[1];
params[0] = new String("persist.sys.aabbcc");

ret = (String) get.invoke(SystemProperties, params);

或者使用 Linux 命令执行:

            try
{
String line;
java.lang.Process p = Runtime.getRuntime().exec("getprop persist.sys.aabbcc");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null)
{
System.out.println(line);
Log.d("HelloDroid", line);
}
input.close();
}
catch (Exception err)
{
err.printStackTrace();
}

但是我无法设置(写入)该属性。我的代码(似乎不起作用)是:

    try {

@SuppressWarnings("rawtypes")
Class SystemProperties = Class.forName("android.os.SystemProperties");


Method set1 = SystemProperties.getMethod("set", new Class[] {String.class, String.class});
set1.invoke(SystemProperties, new Object[] {"persist.sys.aabbcc", "999999"});


} catch( IllegalArgumentException iAE ){
throw iAE;
} catch( Exception e ){
ret= "";
}

也无法使用 exec:

    process = Runtime.getRuntime().exec("setprop persist.sys.aabbcc 555");

请问您能否在 Android java 中设置系统属性?谢谢。

最佳答案

在命令行上运行与通过应用程序设置有很大的不同。当您在 shell 中执行 su 时,该进程将以 root 身份运行,当命令最终到达属性服务并检查您的 UID 时,它将允许以 root 身份写入任何属性。

当您反射(reflect) android.os.SystemProperties 并进行调用时,您将作为应用程序的 UID 发出请求,并且它将被拒绝,因为属性服务具有允许 UID 写入特定关键域的 ACL,参见/system/core/init/property_service.c

请在此处查看我关于如何使其工作的答案:https://stackoverflow.com/a/11123609/1468536

关于android - 无法在 Android 中使用反射或 Linux 命令 exec 在 Android 中设置系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7963817/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com