Java 如何使用作为参数传递到静态方法中的内容解析器

Java 如何使用作为参数传递到静态方法中的内容解析器,java,android,android-contentresolver,Java,Android,Android Contentresolver,非常抱歉,如果我错过了这样一个解决方案。我在这里是在问noob一个问题,但我已经访问过很多次进行研究,我保证我确实在搜索 我正在尝试添加一种方法,用于在重新启动时恢复内核节点,该节点控制受影响Android设备上硬件电容键的激活/停用。我在HardwareKeysSettings.java类中创建了一个方法来执行此操作: public static void restore(Context context) { boolean enableHardwareKeys = Setti

非常抱歉,如果我错过了这样一个解决方案。我在这里是在问noob一个问题,但我已经访问过很多次进行研究,我保证我确实在搜索

我正在尝试添加一种方法,用于在重新启动时恢复内核节点,该节点控制受影响Android设备上硬件电容键的激活/停用。我在HardwareKeysSettings.java类中创建了一个方法来执行此操作:

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方法,您应该会看到,您可以从已经作为参数给定的上下文中获得它,这看起来像是完成了编译,谢谢。我做了回顾,但在看了一遍之后,我更加困惑了……如果你在寻找那个方法,你应该在这里寻找。