首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java读取Android属性

如何使用Java读取Android属性
EN

Stack Overflow用户
提问于 2015-01-26 20:28:10
回答 4查看 18.1K关注 0票数 12

我在终端上使用了“亚行外壳getprop”。我可以在Android中使用哪些接口来获取相同的信息?

我试过几件事,比如:

代码语言:javascript
复制
Properties sysProps = System.getProperties();

但我不认为这些是我想要的一样的财产?具体来说,我希望找到返回类似以下内容的值:

代码语言:javascript
复制
adb shell getprop | grep dolby

shell 'grep杜比‘命令返回以下内容:

代码语言:javascript
复制
[audio.dolby.ds2.enabled]: [true] 
[dolby.audio.sink.info]: [headset] 
[dolby.ds.dialogenhancer.state]: [on] 
[dolby.ds.graphiceq.state]: [off] 
[dolby.ds.hpvirtualizer.state]: [off] 
[dolby.ds.intelligenteq.preset]: [Off] 
[dolby.ds.intelligenteq.state]: [off] 
[dolby.ds.platform]: [qcom] 
[dolby.ds.profile.name]: [Movie] 
[dolby.ds.spkvirtualizer.state]: [off] 
[dolby.ds.state]: [off] 
[dolby.ds.volumeleveler.state]: [on] 

但是我想用Android代码访问这些信息。

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-26 20:36:40

System.getProperties()是否,而不是,返回与相同的属性。

要获得get螺旋桨属性,请尝试使用Runtime.exec()执行get螺旋桨并读取其标准输出。

票数 4
EN

Stack Overflow用户

发布于 2017-01-13 13:25:41

我清理了TMont的解决方案,使其更通用(为propertyName添加了参数):

代码语言:javascript
复制
import android.util.Log;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class SystemProperties {

    private static String GETPROP_EXECUTABLE_PATH = "/system/bin/getprop";
    private static String TAG = "MyApp";

    public static String read(String propName) {
        Process process = null;
        BufferedReader bufferedReader = null;

        try {
            process = new ProcessBuilder().command(GETPROP_EXECUTABLE_PATH, propName).redirectErrorStream(true).start();
            bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line = bufferedReader.readLine();
            if (line == null){
                line = ""; //prop not set
            }
            Log.i(TAG,"read System Property: " + propName + "=" + line);
            return line;
        } catch (Exception e) {
            Log.e(TAG,"Failed to read System Property " + propName,e);
            return "";
        } finally{
            if (bufferedReader != null){
                try {
                    bufferedReader.close();
                } catch (IOException e) {}
            }
            if (process != null){
                process.destroy();
            }
        }
    }
}
票数 9
EN

Stack Overflow用户

发布于 2015-01-26 21:40:38

如果有人想知道我的解决方案..。在乔治的帮助下,我最终使用了这个:

代码语言:javascript
复制
private String propReader() {
        Process process = null;
        try {
            process = new ProcessBuilder().command("/system/bin/getprop")
                    .redirectErrorStream(true).start();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        InputStream in = process.getInputStream();

        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        StringBuilder log = new StringBuilder();
        String line;
        try {
            while ((line = bufferedReader.readLine()) != null) {
                if (line.contains("dolby"))
                    log.append(line + "\n");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println(in);

        process.destroy();
        return log.toString();
    }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28158175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档