非常抱歉,如果我错过了这些方面的解决方案。我是一个在这里问菜鸟的问题,但我曾多次参观过研究,我做了搜索,我保证。
我正在尝试添加一个方法,以便在重新启动时使用,以恢复内核节点,该节点控制受影响的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
那里并不奇怪或非常不正常的问题。与那些比我更了解这一点的人说话,我只是给了这个暗示......
“从作为arg传递的上下文中调用您的内容解析器”
这对我来说很有意义,因为很明显getContentResolver()方法是非静态的,不能在我的静态方法中使用。我需要传入一些东西才能正确使用getContentResolver()方法。
所以,问题是,我到底该怎么做?我有点想法,但ContentResolver是最令我困惑的Android / Java之一。
我有点认为这意味着像这样传递ContentResolver,但不知道如何在内部使用它来实现我的目的:
public static void restore(Context context, ContentResolver contentResolver) {
提前致谢...:)
答案 0 :(得分:1)
我到底该怎么做?
getContentResolver()
是Context
上的一种方法。您正在将Context
传递给restore()
。在getContentResolver()
上致电Context
:
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);
}