- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我试图让这个应用程序从反射中调用 android.os.SystemProperties 但它有点痛苦,所以如果有人能提供帮助,我们将不胜感激。
所以这是让我失望的代码部分:
String str1 = SystemPropertiesProxy.get("ro.url.changelog");
String str2 = SystemPropertiesProxy.get("ro.build.incremental");
String str4 = String.format("?version=%s", str2);
Object[] arrayOfObject1 = new Object[2];
arrayOfObject1[0] = str1;
arrayOfObject1[1] = str4;
String str5 = String.format("%s%s", arrayOfObject1);
...
myWebView.loadUrl(str5);
上面的代码给我错误:“String str1 = SystemPropertiesProxy.get(”ro.url.变更日志”)”这是我试图设置为访问 android.os.SystemProperties 的反射代码:
package com.package.name;
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
}
}
}
再次感谢任何帮助。谢谢。
最佳答案
你没写,这是编译错误
没有方法
public static String get(String key){}
在 SystemPropertiesProxy 中。使用
public static String get(Context context, String key):
SystemPropertiesProxy.get(context, "ro.url.changelog");
无论如何......使用私有(private)API不是一个好主意
关于android - 如何为 android.os.systemproperties 设置反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5754697/
我的 pom.xml 中有一个属性,我想在 log4j2.xml 中使用。但是 log4j2 似乎没有检测到该属性,因此无法创建该文件。 该属性按以下方式定义: log.location
我想在 framework/base/core/Java/Android/hardware/Camera.Java 中添加一个属性 cam.sound 以便我可以用来打开或关闭相机快门声音, 但 Sy
在 camera.java 中,我需要在系统中获取属性。但是,我无法导入 android.os.SystemProperties,编译相机总是报错: packages/apps/Camera/src/
正如标题所示,下面发布了错误。我还尝试将 AppPropertyDir 放入我的环境变量中,但这只能帮助解决其他注入(inject)问题,但对这个问题没有帮助! @Configuration("app
在 camera.java 中,我需要在系统中获取属性。但是,我无法导入 android.os.SystemProperties,编译相机总是报错: packages/apps/Camera/src/
我正在阅读《Spring In Action》一书,其中有一个示例: public BlankDisc(@Value("#{systemProperties['disc.title']}" Strin
我正在尝试使用 SystemProperties.get(); 但无法导入 android.os.SystemProperties 包,谷歌搜索告诉我它是隐藏的,有什么办法解决这个问题吗? 最佳答案
我正在查看 Android Camera 代码,当我尝试导入 android.os.SystemProperties 时,找不到。 这是我正在查看的文件: https://android.google
所以我试图让这个应用程序从反射中调用 android.os.SystemProperties 但它有点痛苦,所以如果有人能提供帮助,我们将不胜感激。 所以这是让我失望的代码部分: St
我正在尝试通过注入(inject)值来读取系统属性。 我正在尝试使用http://juraj.blahunka.eu/2014/05/17/inject-jboss-system-properties
众所周知,我们可以使用 android.os.SystemProperties.set(String, String)和 android.os.SystemProperties.get(String,
我有以下代码将消息属性反序列化到我自己的类中,但如何将默认消息属性获取到同一个类中? var data = Encoding.UTF8.GetString(message.Body); var t
我一直在尝试(我希望如此)直接在钛项目中(使用 SDK 7.0.1.GA 和 hyperloop 3)的简单 Android hyperloop 代码。 var sysProp = require('
我正在尝试读取登录我的应用程序所需的用户名和密码并将其分配给系统属性。我可以使用 System.console().readLine 读取值但我无法将其分配给系统属性。属性值始终为空,我知道它为空,就
要使 SystemProperties.set 正常工作,需要哪些 linux 权限? (安卓) 我正在编写一个在 Android 设备上的系统/应用程序中运行的应用程序。 它正在运行 android
这是我的 pom.xml 文件: 4.0.0 com.test test 1.0-SNAPSHOT my_proj
在构建我的应用程序时,我遇到了一个奇怪的异常。 以下是我在主应用程序文件夹(不在 app 文件夹)中的项目特定 build.gradle 文件。 // Top-level build file whe
我在 maven 中使用一个使用 Jetty 的插件。 在这个插件中,我需要进行配置来设置maxFormContentSize: com.organization.example m
我的 appContext.xml 中有这个 file:pathTo/service.properties file:pa
这个问题已经有答案了: Where is android.os.SystemProperties? (8 个回答) 已关闭 7 年前。 我开发 Android 应用程序来显示一些基本信息。 查看来源,
我是一名优秀的程序员,十分优秀!