2016-07-05 12 views
4

Ich versuche, Text in die Zwischenablage kopiert zu erhalten folgende Listener:Android Wie bekomme ich eine Zeichenfolge aus der Zwischenablage onPrimaryClipChanged?

import android.content.ClipboardManager.OnPrimaryClipChangedListener; 
import com.orhanobut.logger.Logger; 

public class ClipboardListener implements OnPrimaryClipChangedListener 
{ 

    public void onPrimaryClipChanged() 
    { 
     // do something useful here with the clipboard 
     // use getText() method 
     Logger.d("Clipped"); 
    } 
} 

Der Hörer wie folgt initialisiert:

ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); 
clipBoard.addPrimaryClipChangedListener(new ClipboardListener()); 

Nachdem der Text in die Zwischenablage kopiert wird onPrimaryClipChanged gebrannt , aber ich weiß nicht, wie man den kopierten Text in dieser Methode unter Verwendung ClipboardManager.getPrimaryClip() erhält, weil die Methode aus dem Kontext nicht verfügbar ist und in dem Parameter onPrimaryClipChanged nicht übergeben wird.

Antwort

7

Ich würde vorschlagen, den Listener wie folgt hinzuzufügen, anstatt eine neue Klasse zu erstellen. Ich habe eingeschlossen, wie man Text von den ClipData erhält.

Sie erwähnen, dass Sie nicht auf Ihren Kontext im Listener zugreifen können. Ich habe einen Kommentar im folgenden Code hinzugefügt, der zeigt, wie das geht.

ClipboardManager clipBoard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); 
clipBoard.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() { 

    @Override 
    public void onPrimaryClipChanged() { 
     ClipData clipData = clipBoard.getPrimaryClip(); 
     ClipData.Item item = clipData.getItemAt(0); 
     String text = item.getText().toString(); 

     // Access your context here using YourActivityName.this 
    } 
}); 
+0

Es wirft Null-Zeiger Ausnahme: java.lang.NullPointerException: Versuch Interface-Methode 'java.lang.String java.lang.CharSequence.toString()' auf ein Null-Objekt Referenz – redrom

+0

Sie werden wahrscheinlich aufrufen müssen eine Sicherheitsprüfung für item.getText() hinzufügen, die null ist, wenn kein Text im ClipBoard vorhanden ist, wenn onPrimaryClipChanged ausgelöst wird. –

+0

Gibt es eine Möglichkeit, diese Art von ClipBoard Daten in iOS zu bekommen? @KarenForde –

Verwandte Themen