2016-07-29 19 views
0

Derzeit habe ich diesen Code, wo ich einen Inhalt eines Webview abrufen und gleichzeitig Anzeige auf einem Teil des Webview entfernen möchte, aber mein Code überhaupt nichts getan oder irgendeinen Fehler zeigend, also bin ich hier Verlust. Derzeit beziehe ich mich auf this und this Post für meinen Code.Javascript funktioniert nicht für WebView - Android

Dies ist die Seite, wo mein webview Anzeige link

Das ist mein Code ist dies ‚WebViewActivity.java`

public class WebViewActivity extends Activity{ 

TextToSpeech textToSpeech; 


@SuppressLint("JavascriptInterface") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_webview); 

    final WebView webview = (WebView) findViewById(R.id.webView); 
    TextView contentView = (TextView) findViewById(R.id.contentView); 


    Intent intent = getIntent(); 
    String Address = intent.getStringExtra("URL"); 
    //Log.d("Valuer", value); 
    //tt1.setText(value); 

    class MyJavaScriptInterface 
    { 
     private TextView contentView; 

     public MyJavaScriptInterface(TextView aContentView) 
     { 
      contentView = aContentView; 
     } 

     @SuppressWarnings("unused") 
     @SuppressLint("JavascriptInterface") 

     public void processContent(String aContent) 
     { 
      final String content = aContent; 
      contentView.post(new Runnable() 
      { 
       public void run() 
       { 
        contentView.setText(content); 
       } 
      }); 
     } 
    } 

    webview.getSettings().setLoadsImagesAutomatically(true); 
    webview.addJavascriptInterface(new MyJavaScriptInterface(contentView), "INTERFACE"); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webview.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      webview.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByClassName('western')[0].innerText);"); 
      webview.loadUrl("javascript:(function() { " + 
        "document.getElementsByTagName('section')[0].style.display=\"none\"; " + 
        "})()"); 
     } 
    }); 



    webview.loadUrl(Address); 
    //textToSpeech.speak("TALK", TextToSpeech.QUEUE_FLUSH, null); 


} 



} 

Antwort

2

versuchen, Durch diese Zeile hinzufügen

 " webview.getSettings().setJavaScriptEnabled(true);" 

and Go zu Ihrer "Proguard.rules" Datei und machen Sie diesen kommentierten Code brauchbar für Javascript

# If your project uses WebView with JS, uncomment the following 
    # and specify the fully qualified class name to the JavaScript interface 
    # class: 
    #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
    # public *; 
    #} 
+0

Vielen Dank für Ihre Antwort. Nur durch Entfernen der # richtig? Ich muss nichts anderes bearbeiten? Kann ich wissen, warum Android dies nicht nur in den Standardeinstellungen aktiviert hat? Liegt es an Sicherheitsgründen? –

+0

Ja, entfernen Sie einfach "#". Und ja, ich denke, JavaScript ist sehr sensible Sache zu verwenden, und es kann eine Menge Last zu verwalten, deshalb empfehlen sie dies. –

+0

Was bedeutet es, "den vollständig qualifizierten Klassennamen für die JavaScript-Interface-Klasse angeben"? –

Verwandte Themen