Italian lettura testo da Clipboard

sirjo66

Well-Known Member
Licensed User
Longtime User
ciao a tutti,
uso questo codice per leggere il testo inserito nella clipboard e copiarlo sul edittext:
B4X:
Sub Activity_Create(FirstTime As Boolean)
    Dim clip As BClipboard
    Dim txt As String = ""
    If clip.hasText Then txt = clip.getText
    Log("txt = " & txt)
    Activity.LoadLayout("Layout")
    EditText1.Text = txt
End Sub

ieri funzionava :D

oggi no :(

perchè ??

eppure non ho fatto praticamente nessuna modifica e questo codice è il primo che viene eseguito dalla app

Perchè non riesce a trovare il testo della clipboard ??
Se clicco sul EditText e seleziono "incolla" il testo appare, ma è proprio l'operazione che vorrei evitare

Thanks
 

Star-Dust

Expert
Licensed User
Longtime User
Cambiato dispositivo?
io uso questo
Clipboard class:
Private Sub Class_Globals
 
End Sub

'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize

End Sub

Public Sub GetText As String
    Dim r As Reflector
    Dim jo As JavaObject
    jo = Me
    Dim sOk As String
    sOk = jo.RunMethod("GetTextFromClipboard", Array As Object(r.GetContext))
    Return sOk
End Sub


Public Sub SetText(txt As String) As Boolean
    Dim r As Reflector
    Dim jo As JavaObject
    jo = Me
    Dim bOk As Boolean
    bOk = jo.RunMethod("SetTextToClipboard", Array As Object(txt, r.GetContext))
    Return bOk
End Sub


Public Sub ClipboardHasText As Boolean
    Dim jo As JavaObject
    Dim r As Reflector
    jo = Me
    Dim bOk As Boolean
    bOk = jo.RunMethod("HasTextCopied", Array As Object(r.GetContext))
    Return bOk
End Sub


#IF JAVA

import android.content.ClipboardManager;
import android.content.ClipData;
import android.content.ClipDescription;
import android.content.Context;

public Boolean SetTextToClipboard(Object objtxt, Object mObjContext) {
    try{
        String txt = (String) objtxt;
        Context mContext = (Context) mObjContext;
        ClipboardManager myClipboard = (ClipboardManager) mContext.getSystemService("clipboard");
        ClipData myClip;
        myClip = ClipData.newPlainText("text", txt);
        myClipboard.setPrimaryClip(myClip);
        return true;
    }
    catch(Exception ex){
        return false;
    }
};

public String GetTextFromClipboard(Object mObjContext) {
    Context mContext = (Context) mObjContext;
    ClipboardManager myClipboard = (ClipboardManager) mContext.getSystemService("clipboard");
    ClipData myClip = myClipboard.getPrimaryClip();
    ClipData.Item item = myClip.getItemAt(0);
    String txt = item.getText().toString();
    return txt;
};


public Boolean HasTextCopied(Object mObjContext) {
Context mContext = (Context) mObjContext;
ClipboardManager myClipboard = (ClipboardManager) mContext.getSystemService("clipboard");
if (!(myClipboard.hasPrimaryClip())) {
    return false;
} else if (!(myClipboard.getPrimaryClipDescription().hasMimeType("text/plain"))) {
    return false;
} else {
    return true;
}
};

#End If
 

sirjo66

Well-Known Member
Licensed User
Longtime User
grazie mille, la linea che va in errore è la linea
B4X:
bOk = jo.RunMethod("HasTextCopied", Array As Object(r.GetContext))
e dice
java.lang.IllegalArgumentException: Expected receiver of type sjs.CercaTel.main, but got java.lang.Class<sjs.CercaTel.main>
ora provo a vedere di aggiornare il SDK, poi vi aggiorno
intanto grazie
 

Star-Dust

Expert
Licensed User
Longtime User
il sorgente devi metterla dentro una classe per funzionare non nel main
 

sirjo66

Well-Known Member
Licensed User
Longtime User
il sorgente devi metterla dentro una classe per funzionare non nel main

Funziona !!!!!! Grazie mille

Ma comunque il mistero continua perchè adesso, ripristinando il codice di prima, cioè utilizzando la libreria BClipboard funziona nuovamente
Bel mistero
 

Star-Dust

Expert
Licensed User
Longtime User
Funziona !!!!!! Grazie mille

Ma comunque il mistero continua perchè adesso, ripristinando il codice di prima, cioè utilizzando la libreria BClipboard funziona nuovamente
Bel mistero
Lo hai intimorito che usavi un altro metodo e ha ceduto. Io faccio sempre cosi, minaccio di cambiare libreria e loro funzionano per timore
 
Top