2016-05-29 2 views
0

Sehr leid, wenn ich eine Lösung vermisst habe, die in diese Richtung geht. Ich bin eine Frage, die hier noob fragt, aber viele Male für die Forschung besucht habe, und ich habe gesucht, ich verspreche es.Verwendung von Content Resolver in eine statische Methode als Argument übergeben

Ich versuche, eine Methode hinzuzufügen, die bei einem Neustart verwendet wird, um einen Kernel-Knoten wiederherzustellen, der die Aktivierung/Deaktivierung von Hardware-kapazitiven Schlüsseln auf einem betroffenen Android-Gerät steuert. Ich habe eine Methode erstellt diese Innenseite meiner HardwareKeysSettings.java Klasse zu tun:

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); 
} 

Und meine Methode wird aus einer BootReceiver Klasse genannt:

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); 
    } 
} 

ich nicht kompilieren kann, denn in Mit der obigen Methode restore() kann die Methode getContentResolver() nicht innerhalb einer statischen Methode verwendet werden (die ich verwenden muss). Ich bekomme diese Fehler:

/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 

Nicht überraschend oder schrecklich abnormal Probleme dort. Im Gespräch mit jemandem, der darüber als ich Art und Weise mehr Wissen ist, war mir diesen Hinweis nur gegeben ... bis

„rufen Sie Ihren Inhalt Resolver aus dem Kontext als arg bestanden“

die machen Sinn für mich, da offensichtlich die Methode getContentResolver() nicht statisch ist und nicht in meiner statischen Methode verwendet werden kann. Ich muss etwas eingeben, um die getContentResolver() -Methode richtig zu verwenden.

Also ist die Frage, wie genau mache ich das? Ich habe eine Idee, aber ContentResolver gehört zu den verwirrendsten Android/Java-Sachen für mich.

ich irgendwie denke das bedeutet in ContentResolver wie dies vorbei, aber keine Ahnung, wie es für meine Zwecke intern zu verwenden:

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

Vielen Dank im Voraus ... :)

+0

Wenn Sie die Dokumentation für den Inhalt Resolver Methode Lookup, sollten Sie sehen, dass es aus dem Kontext bekommen, die Sie bereits als Parameter angegeben haben –

+0

so aussieht bekam die Kompilierung fertig, danke. Ich habe https://developer.android.com/reference/android/content/ContentResolver.html überprüft, war aber mehr verwirrt, nachdem ich das über ... –

+0

angesehen habe. Sie sollten hier suchen, wenn Sie nach dieser Methode gesucht haben. https://developer.android.com/reference/android/content/Context.html –

Antwort

1

Wie genau mache ich das?

getContentResolver() ist eine Methode auf Context. Sie übergeben eine Context an restore(). Rufen Sie getContentResolver() an diesem 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); 
} 
Verwandte Themen