Java 如何使用作为参数传递到静态方法中的内容解析器
非常抱歉,如果我错过了这样一个解决方案。我在这里是在问noob一个问题,但我已经访问过很多次进行研究,我保证我确实在搜索 我正在尝试添加一种方法,用于在重新启动时恢复内核节点,该节点控制受影响Android设备上硬件电容键的激活/停用。我在HardwareKeysSettings.java类中创建了一个方法来执行此操作:Java 如何使用作为参数传递到静态方法中的内容解析器,java,android,android-contentresolver,Java,Android,Android Contentresolver,非常抱歉,如果我错过了这样一个解决方案。我在这里是在问noob一个问题,但我已经访问过很多次进行研究,我保证我确实在搜索 我正在尝试添加一种方法,用于在重新启动时恢复内核节点,该节点控制受影响Android设备上硬件电容键的激活/停用。我在HardwareKeysSettings.java类中创建了一个方法来执行此操作: public static void restore(Context context) { boolean enableHardwareKeys = Setti
public static void restore(Context context) {
boolean enableHardwareKeys = Settings.System.getInt(getContentResolver(),
Settings.System.HARDWARE_KEYS_ENABLED, 1) == 1;
Settings.System.putInt(getContentResolver(),
Settings.System.HARDWARE_KEYS_ENABLED, enableHardwareKeys ? 1 : 0);
}
我的方法是从BootReceiver类调用的:
package com.android.settings.slim;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.android.settings.slim.HardwareKeysSettings;
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
/* Restore the hardware tunable values */
HardwareKeysSettings.restore(ctx);
}
}
我无法编译它,因为在上面的restore()方法中,getContentResolver()方法不能在静态方法中使用(我需要使用)。我发现以下错误:
/packages/apps/Settings/src/com/android/settings/slim/HardwareKeysSettings.java:676: Cannot make a static reference to the non-static method getContentResolver() from the type SettingsPreferenceFragment
/packages/apps/Settings/src/com/android/settings/slim/HardwareKeysSettings.java:678: Cannot make a static reference to the non-static method getContentResolver() from the type SettingsPreferenceFragment
没有令人惊讶或非常不正常的问题。和一个比我更了解这一点的人交谈,我只得到了这个暗示。。。到
“从作为参数传递的上下文调用内容解析器”
这对我来说很有意义,因为getContentResolver()方法显然是非静态的,不能在静态方法中使用。为了正确使用getContentResolver()方法,我需要传入一些内容
所以,问题是,我到底该怎么做?我有一些想法,但ContentResolver是我最困惑的Android/java工具之一
我认为这意味着像这样传入ContentResolver,但不知道如何在内部使用它:
public static void restore(Context context, ContentResolver contentResolver) {
提前感谢……:)
我该怎么做
getContentResolver()
是Context
上的一个方法。您正在将上下文
传递到restore()
。对该上下文调用getContentResolver()
:
public static void restore(Context context) {
boolean enableHardwareKeys = Settings.System.getInt(context.getContentResolver(),
Settings.System.HARDWARE_KEYS_ENABLED, 1) == 1;
Settings.System.putInt(context.getContentResolver(),
Settings.System.HARDWARE_KEYS_ENABLED, enableHardwareKeys ? 1 : 0);
}
我该怎么做
getContentResolver()
是Context
上的一个方法。您正在将上下文
传递到restore()
。对该上下文调用getContentResolver()
:
public static void restore(Context context) {
boolean enableHardwareKeys = Settings.System.getInt(context.getContentResolver(),
Settings.System.HARDWARE_KEYS_ENABLED, 1) == 1;
Settings.System.putInt(context.getContentResolver(),
Settings.System.HARDWARE_KEYS_ENABLED, enableHardwareKeys ? 1 : 0);
}
如果您在文档中查找content resolver方法,您应该会看到,您可以从已经作为参数给定的上下文中获得它,这看起来像是完成了编译,谢谢。我做了回顾,但在看了一遍之后,我更加困惑了……如果你在寻找那个方法,你应该在这里寻找。如果您在文档中查找content resolver方法,您应该会看到,您可以从已经作为参数给定的上下文中获得它,这看起来像是完成了编译,谢谢。我做了回顾,但在看了一遍之后,我更加困惑了……如果你在寻找那个方法,你应该在这里寻找。