Italian Visualizzare la versione Desktop di un sito con WebView

Sagenut

Well-Known Member
Licensed User
Non ho usato Webview ma se riesco cerco di aiutarti.
Hai già un tuo progetto che funziona visualizzando i siti in formato mobile?
Hai cercato di applicare questo codice
B4X:
Dim Obj1 As Reflector
   Obj1.Target = Webv
   Msgbox(Obj1.ToString, "Target")
   Obj1.Target = Obj1.RunMethod("getSettings")
   Msgbox(Obj1.ToString, "Settings")
   
   Msgbox(Obj1.RunMethod("getUserAgentString"), "User agent")
   
   Obj1.RunMethod2("setUserAgentString", "Desktop", "java.lang.String")
ma non ha funzionato?
O non hai capito come integrare questo codice?
 

Sagenut

Well-Known Member
Licensed User
Le righe con i msgbox le puoi rimuovere o commentare.
Hai aggiunto la libreria Reflection?
Nella riga
B4X:
Obj1.Target = Webv
devi mettere al posto di Webv il nome della tua Webview.
Oppure devi rinominare la tua in Webv.
Quel codice devi metterlo giusto prima di fare la chiamata alla webview per visualizzare il sito.
Prova così.
 

Nestor71

Member
Licensed User
Ho commentato le righe con i msgbox ho aggiunto la libreria Reflecton ho messo al posto di Webv il nome della mia webvew ma niente continua a visualizzare il sito mobile , il codice che ho messo è questo:

B4X:
Sub Globals
    'These global variables will be redeclared each time the activity is created.
    'These variables can only be accessed from this module.

    Private WebView1 As WebView   
End Sub

Sub Activity_Create(FirstTime As Boolean)
    
    Activity.LoadLayout("Main")

    Dim Obj1 As Reflector
    Obj1.Target = WebView1
    'Msgbox(Obj1.ToString, "Target")
    Obj1.Target = Obj1.RunMethod("getSettings")
    'Msgbox(Obj1.ToString, "Settings")
  
    'Msgbox(Obj1.RunMethod("getUserAgentString"), "User agent")
  
    Obj1.RunMethod2("setUserAgentString", "Desktop", "java.lang.String")
    
    WebView1.LoadUrl("https://www.b4x.com/android/forum/")
    
End Sub
 

sirjo66

Well-Known Member
Licensed User
alcuni siti passano da "desktop" a "mobile" non in base al "user-agent", ma in base alla larghezza dello schermo, io ad esempio su alcuni miei siti ho fatto proprio così, e la pagina https://www.b4x.com/android/forum/ è proprio una di queste.

Se tu, sul PC, apri https://www.b4x.com/android/forum/ e poi piano piano la riduci in larghezza, vedrai che lei riadatta ogni volta gli oggetti, ed a un certo punto sarà uguale a come la vedi sul telefonino, per cui non c'è una versione desktop e una mobile, ma dipende solo dalla larghezza dello schermo.
 

Nestor71

Member
Licensed User
Lo so, ma il sito che metto nella Webview se riduco la larghezza dal pc visualizza lo stesso il sito Desktop
 

sirjo66

Well-Known Member
Licensed User
Lo so, ma il sito che metto nella Webview se riduco la larghezza dal pc visualizza lo stesso il sito Desktop
Allora vuol dire che il sito fa altri test (e non sulla larghezza) per capire se Desktop o Mobile
La strada del user-agent quindi è corretta

Sei sicuro che una volta configurato l'user-agent questo venga rilevato correttamente ??

Prova con il WebView a collegarti su http://www.sirjo.com/getpost.php e vedi che user-agent ti rileva
 

Nestor71

Member
Licensed User
Se inserisco solo questo codice:

B4X:
WebView1.LoadUrl("http://www.sirjo.com/getpost.php")
ottengo questa stringa
[HTTP_USER_AGENT] => Mozilla/5.0 (Linux; Android 9; SM-G975F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36

se inserisco qoesto codice:

B4X:
    Dim Obj1 As Reflector
    Obj1.Target = WebView1
    'Msgbox(Obj1.ToString, "Target")
    Obj1.Target = Obj1.RunMethod("getSettings")
    'Msgbox(Obj1.ToString, "Settings")
  
    'Msgbox(Obj1.RunMethod("getUserAgentString"), "User agent")
  
    Obj1.RunMethod2("setUserAgentString", "Desktop", "java.lang.String")
    
    
    WebView1.LoadUrl("http://www.sirjo.com/getpost.php")
ottengo qoesta

[HTTP_USER_AGENT] => Desktop
 

Sagenut

Well-Known Member
Licensed User
Almeno sembra che l'User Agent venga effettivamente modificato.
Forse và modificato in maniera diversa.
Nella discussione che avevi linkato c'era un altro link di Erel che mandava a qualcosa sugli user agent.
Magari spiega altri modi per modificarlo.
 
Top