如何使用传递给静态方法的内容解析器作为参数
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);
}
非常抱歉,如果我错过了符合这些思路的解决方案。我是个菜鸟,但是为了研究访问过很多次,我也搜索过,我保证。
我正在尝试添加一种方法,以便在重新启动时使用该方法来恢复内核节点,该节点控制受影响的 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);
}