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:
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?
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: