为了账号安全,请及时绑定邮箱和手机立即绑定

android.os.SystemProperties在哪里?

android.os.SystemProperties在哪里?

白衣染霜花 2019-08-31 15:48:30
我正在查看Android Camera代码,当我尝试导入时android.os.SystemProperties,无法找到它。这是我正在查看的文件:https://android.googlesource.com/platform/packages/apps/Camera/+/eclair-release/src/com/android/camera/VideoCamera.java我创建了一个新的2.1项目并尝试再次导入此命名空间,但仍然无法找到它。我检查了https://developer.android.com并SystemProperties没有列出。我错过了什么?
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

如果使用“反射”选项,则可以使用下面的类


package com.etc.etc;


import java.io.File;

import java.lang.reflect.Method;

import android.content.Context;

import dalvik.system.DexFile;



public class SystemPropertiesProxy

{


/**

 * This class cannot be instantiated

 */

private SystemPropertiesProxy(){


}


    /**

     * Get the value for the given key.

     * @return an empty string if the key isn't found

     * @throws IllegalArgumentException if the key exceeds 32 characters

     */

    public static String get(Context context, String key) throws IllegalArgumentException {


        String ret= "";


        try{


          ClassLoader cl = context.getClassLoader(); 

          @SuppressWarnings("rawtypes")

          Class SystemProperties = cl.loadClass("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(key);


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


        }catch( IllegalArgumentException iAE ){

            throw iAE;

        }catch( Exception e ){

            ret= "";

            //TODO

        }


        return ret;


    }


    /**

     * Get the value for the given key.

     * @return if the key isn't found, return def if it isn't null, or an empty string otherwise

     * @throws IllegalArgumentException if the key exceeds 32 characters

     */

    public static String get(Context context, String key, String def) throws IllegalArgumentException {


        String ret= def;


        try{


          ClassLoader cl = context.getClassLoader(); 

          @SuppressWarnings("rawtypes")

          Class SystemProperties = cl.loadClass("android.os.SystemProperties");


          //Parameters Types

          @SuppressWarnings("rawtypes")

              Class[] paramTypes= new Class[2];

          paramTypes[0]= String.class;

          paramTypes[1]= String.class;          


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


          //Parameters

          Object[] params= new Object[2];

          params[0]= new String(key);

          params[1]= new String(def);


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


        }catch( IllegalArgumentException iAE ){

            throw iAE;

        }catch( Exception e ){

            ret= def;

            //TODO

        }


        return ret;


    }


    /**

     * Get the value for the given key, and return as an integer.

     * @param key the key to lookup

     * @param def a default value to return

     * @return the key parsed as an integer, or def if the key isn't found or

     *         cannot be parsed

     * @throws IllegalArgumentException if the key exceeds 32 characters

     */

    public static Integer getInt(Context context, String key, int def) throws IllegalArgumentException {


        Integer ret= def;


        try{


          ClassLoader cl = context.getClassLoader(); 

          @SuppressWarnings("rawtypes")

          Class SystemProperties = cl.loadClass("android.os.SystemProperties");


          //Parameters Types

          @SuppressWarnings("rawtypes")

              Class[] paramTypes= new Class[2];

          paramTypes[0]= String.class;

          paramTypes[1]= int.class;  


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


          //Parameters

          Object[] params= new Object[2];

          params[0]= new String(key);

          params[1]= new Integer(def);


          ret= (Integer) getInt.invoke(SystemProperties, params);


        }catch( IllegalArgumentException iAE ){

            throw iAE;

        }catch( Exception e ){

            ret= def;

            //TODO

        }


        return ret;


    }


    /**

     * Get the value for the given key, and return as a long.

     * @param key the key to lookup

     * @param def a default value to return

     * @return the key parsed as a long, or def if the key isn't found or

     *         cannot be parsed

     * @throws IllegalArgumentException if the key exceeds 32 characters

     */

    public static Long getLong(Context context, String key, long def) throws IllegalArgumentException {


        Long ret= def;


        try{


          ClassLoader cl = context.getClassLoader();

          @SuppressWarnings("rawtypes")

              Class SystemProperties= cl.loadClass("android.os.SystemProperties");


          //Parameters Types

          @SuppressWarnings("rawtypes")

              Class[] paramTypes= new Class[2];

          paramTypes[0]= String.class;

          paramTypes[1]= long.class;  


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


          //Parameters

          Object[] params= new Object[2];

          params[0]= new String(key);

          params[1]= new Long(def);


          ret= (Long) getLong.invoke(SystemProperties, params);


        }catch( IllegalArgumentException iAE ){

            throw iAE;

        }catch( Exception e ){

            ret= def;

            //TODO

        }


        return ret;


    }


    /**

     * Get the value for the given key, returned as a boolean.

     * Values 'n', 'no', '0', 'false' or 'off' are considered false.

     * Values 'y', 'yes', '1', 'true' or 'on' are considered true.

     * (case insensitive).

     * If the key does not exist, or has any other value, then the default

     * result is returned.

     * @param key the key to lookup

     * @param def a default value to return

     * @return the key parsed as a boolean, or def if the key isn't found or is

     *         not able to be parsed as a boolean.

     * @throws IllegalArgumentException if the key exceeds 32 characters

     */

    public static Boolean getBoolean(Context context, String key, boolean def) throws IllegalArgumentException {


        Boolean ret= def;


        try{


          ClassLoader cl = context.getClassLoader(); 

          @SuppressWarnings("rawtypes")

          Class SystemProperties = cl.loadClass("android.os.SystemProperties");


          //Parameters Types

          @SuppressWarnings("rawtypes")

              Class[] paramTypes= new Class[2];

          paramTypes[0]= String.class;

          paramTypes[1]= boolean.class;  


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


          //Parameters         

          Object[] params= new Object[2];

          params[0]= new String(key);

          params[1]= new Boolean(def);


          ret= (Boolean) getBoolean.invoke(SystemProperties, params);


        }catch( IllegalArgumentException iAE ){

            throw iAE;

        }catch( Exception e ){

            ret= def;

            //TODO

        }


        return ret;


    }


    /**

     * Set the value for the given key.

     * @throws IllegalArgumentException if the key exceeds 32 characters

     * @throws IllegalArgumentException if the value exceeds 92 characters

     */

    public static void set(Context context, String key, String val) throws IllegalArgumentException {


        try{


          @SuppressWarnings("unused")

          DexFile df = new DexFile(new File("/system/app/Settings.apk"));

          @SuppressWarnings("unused")

          ClassLoader cl = context.getClassLoader(); 

          @SuppressWarnings("rawtypes")

          Class SystemProperties = Class.forName("android.os.SystemProperties");


          //Parameters Types

          @SuppressWarnings("rawtypes")

              Class[] paramTypes= new Class[2];

          paramTypes[0]= String.class;

          paramTypes[1]= String.class;  


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


          //Parameters         

          Object[] params= new Object[2];

          params[0]= new String(key);

          params[1]= new String(val);


          set.invoke(SystemProperties, params);


        }catch( IllegalArgumentException iAE ){

            throw iAE;

        }catch( Exception e ){

            //TODO

        }


    }

}



查看完整回答
反对 回复 2019-08-31
  • 3 回答
  • 0 关注
  • 1755 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信