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

How to use Content Resolver passed into a static method as an argument

非常抱歉,如果我错过了符合这些思路的解决方案。我是个菜鸟,但是为了研究访问过很多次,我也搜索过,我保证。

我正在尝试添加一种方法,以便在重新启动时使用该方法来恢复内核节点,该节点控制受影响的 Android 设备上的 activation/deactivation 硬件电容键。我在 HardwareKeysSettings.java class:

中创建了一个方法来执行此操作
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 调用的 class:

    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

那里的问题不足为奇或非常异常。与比我更了解这一点的人交谈时,我只得到了这个提示......

"call your content resolver from the context passed as a arg"

这对我来说很有意义,因为显然 getContentResolver() 方法是非静态的,不能在我的静态方法中使用。我需要传递一些东西才能正确使用 getContentResolver() 方法。

所以,问题是,我该怎么做呢?我有点想法,但 ContentResolver 是 Android/java 最让我困惑的事情之一。

我有点想这意味着像这样传入 ContentResolver,但不知道如何在内部使用它来达到我的目的:

public static void restore(Context context, ContentResolver contentResolver) {

提前致谢...:)

how exactly do I do this?

getContentResolver()Context 上的一个方法。您正在将 Context 传递给 restore()。在 Context:

上调用 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);
}