Domanda

Sto usando Childbrowser , che funziona bene da visualizzarePagine Web esterne all'interno della mia applicazione telefonica.Il mio problema è che non sono in grado di aggiungere titolo / intestazione nelle pagine web per bambini.Qualche suggerimento?

Cosa ho provato finora

invece di toolbar.addView(edittext); ho aggiunto

final TextView rowTextView = new TextView(ctx.getContext()); 
rowTextView.setText(myTitle); 
toolbar.addView(rowTextView); 
.

Ma sembra che abbia anche bisogno di passare la variabile mytitle per eseguire il metodo in modo che il pluginresult execute () posso usare qualcosa come

result = this.showWebPage(args.getString(0), args.optJSONObject(1), myTitle);
.

Posso aggiungere lo stesso campione di il tuo codice per iOS?

È stato utile?

Soluzione

Dovrai "aggiornare" Childbrowser: da qualche parte attorno alla linea 340 c'è questo codice: webview.setWebViewClient(client);. Sostituiscilo con quanto segue:

webview.setWebViewClient(new WebViewClient() {
  @Override
    public void onPageFinished(WebView view, String url) {
      webview.loadUrl("javascript:(function(){"+"var t=document.head.getElementsByTagName('title')[0];t.innerHTML="+myNewTitle+"})()");
    }
});  
.

dovrai modificare anche le opzioni di lettura del codice showWebPage() per impostare myNewTitle. Ma dopo, dovresti essere bello andare.

Modifica:

Fondamentalmente ho deciso che - per il mio uso almeno, e probabilmente il tuo - la barra degli strumenti come è stata necessaria. Originariamente, ho modificato Childbrowser in modo che potessi fare Google OAUTH2 indolore, inviando indietro la fonte HTML completa al codice JS. Sicuramente non ho bisogno di una barra degli strumenti, poiché l'utente sta andando dove Google lo vuole, periodo. Ho dovuto incidere sul codice, e l'autore originale potrebbe essere incazzato in quello che ho fatto con il suo codice ... Ecco una lista di controllo:

import android.view.Gravity;
import android.util.TypedValue;
import android.graphics.Color;
import android.graphics.Typeface;

public class ChildBrowser extends Plugin {
  **public String zeTitle;**

//  private EditText edittext;
private TextView edittext;
.

Tutti i riferimenti a EditText devono essere modificati in TextView.

result = this.showWebPage(args.getString(0), args.optJSONObject(1)**, args.getString(2)**);
.

dovrai cambiare roba nel file .js anche.

public String showWebPage(final String url, JSONObject options**, String myNewTitle**) {
  if (options != null) {
    showLocationBar = options.optBoolean("showLocationBar", true);
  }
  **zeTitle=myNewTitle;**
.

Commenta tutto il codice relativo al ImageButton.

edittext = new TextView(ctx.getContext()); // insread of EditText
.

Commenta il edittext.setOnKeyListener

// edittext.setText(url);
edittext.setText(zeTitle);
edittext.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);
edittext.setGravity(Gravity.CENTER);
edittext.setTextColor(Color.DKGRAY);
edittext.setTypeface(Typeface.DEFAULT_BOLD);
.

Aggiungi alla barra degli strumenti solo ciò che è necessario:

// toolbar.addView(back);
// toolbar.addView(forward);
toolbar.addView(edittext);
// toolbar.addView(close);
.

Infine:

public class ChildBrowserClient extends WebViewClient {
// EditText edittext;
  TextView edittext;

/**
 * Constructor.
 * 
 * @param mContext
 * @param edittext 
 */
public ChildBrowserClient(TextView mEditText) {
//  this.edittext = mEditText;
}
.

Nel codice JS:

cb.showWebPage(YOUR_URL, {showLocationBar:true}, YOUR_TITLE);
.

Dovresti essere buono per andare. Metterò una versione aggiornata del Childbrowser che uso su GitHub.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top