CSS einer Webseite verändern

W

wofus

Neues Mitglied
0
Hallo,

ich versuche mithilfe einer App die CSS Styles einer Webseite zu verändern. Als Vorlage habe ich diesen Code genommen und leicht angepasst: Build software better, together

Mein Code sieht folgendermaßen aus:

Java:
package com.example.test1;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Base64;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {

    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        webView = new WebView(this);
        setContentView(webView);

        // Enable Javascript
        webView.getSettings().setJavaScriptEnabled(true);

        // Add a WebViewClient
        webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageFinished(WebView view, String url) {

                // Inject CSS when page is done loading
                injectCSS();
                super.onPageFinished(view, url);
            }
        });

        // Load a webpage
        webView.loadUrl("http://www.andreas-gutmann.at/");
    }

    // Inject CSS method: read style.css from assets folder
// Append stylesheet to document head
    private void injectCSS() {
        try {
            InputStream inputStream = getAssets().open("http://www.andreas-gutmann.at/style.css");
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            inputStream.close();
            String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);
            webView.loadUrl("function addGlobalStyle(css) {" +
                    "var head, style;" +
                    "head = document.getElementsByTagName('head')[0];" +
                    "if (!head) { return; }" +
                    "style = document.createElement('style');" +
                    "style.type = 'text/css';" +
                    "style.innerHTML = css;" +
                    "head.appendChild(style);" +
                    "}" +
                    "addGlobalStyle('body {background-color:red;}');");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Mit diesen Programm möchte ich den Hintergrund der aufzurufenden Webseite von grau in rot verändern.
Leider passiert beim Aufrufen der App nichts, die Seite wird ohne dem angepassten Stylesheet normal angezeigt.
Hat jemand einen Tipp für mich wo das Problem liegen könnte?
 
Zuletzt bearbeitet:
Okay ich bin ein Stückchen weiter gekommen. Laut Logcat kann keine Verbindung zur css Datei aufgebaut werden. Das Problem habe ich behoben in dem ich die Zeile
Java:
InputStream inputStream = getAssets().open("http://www.andreas-gutmann.at/style.css");
durch
Java:
InputStream inputStream = new URL("http://www.andreas-gutmann.at/style.css").openStream();
ersetzt habe. Danach habe ich in der Logcat Ausgabe noch eine Fehlermeldung mit: "android.os.NetworkOnMainThreadException"
Habe ich auch gelöst mit:
Java:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Mit dieser Fehlermeldung kann ich momentan nichts anfangen:
Code:
2020-01-24 00:33:19.616 7800-7800/com.example.test1 I/chromium: [INFO:CONSOLE(1)] "Uncaught SyntaxError: Unexpected identifier", source: http://www.andreas-gutmann.at/ (1)

Weiß jemand wie ich diese Meldung behebe?
 
Zuletzt bearbeitet:

Ähnliche Themen

A
Antworten
1
Aufrufe
584
swa00
swa00
D
  • Data2006
Antworten
14
Aufrufe
487
jogimuc
J
H
Antworten
0
Aufrufe
933
HoustonWeHaveAProblem
H
Zurück
Oben Unten