A
andireas99
Neues Mitglied
- 2
Guten Morgen
hier mein kleines Problemchen:
Zuerst lade ich den Quellcode runter, da ich später noch die <img> Tags parse, damit man die Bilder auf der Website auch downloaden kann.
Danach zeige ich die (veränderte) Website in einer WebView an mit "LoadDataWithBaseUrl", damit auch externe (css, javascript) Dateien eingebunden werden.
1) Nun wird aber nicht die mobile Version der Website angezeigt sondern die Desktop-Version! Wenn ich "loadUrl" nutze wird er in der mobilen Version angezeigt, nur sind eben die externen Dateien nicht dabei.
2) Ausserdem werden Umlaute nicht richtig angezeigt. Irgendwie habe ich das Gefühl, ich habe den Quellcode irgendwo mal kaputt gemacht...
Hier natürlich noch die Codes:
Browser.java
Ps: Ich weiss ich muss unbedingt noch den HTTPClient ersetzen!
Donloader.java
Hab noch 2 Bilder angehängt, wie es mit "LoadDataWithBaseUrl" aussieht.
Ich danke für jede Hilfe!
Freundliche Grüsse Andireas99
hier mein kleines Problemchen:
Zuerst lade ich den Quellcode runter, da ich später noch die <img> Tags parse, damit man die Bilder auf der Website auch downloaden kann.
Danach zeige ich die (veränderte) Website in einer WebView an mit "LoadDataWithBaseUrl", damit auch externe (css, javascript) Dateien eingebunden werden.
1) Nun wird aber nicht die mobile Version der Website angezeigt sondern die Desktop-Version! Wenn ich "loadUrl" nutze wird er in der mobilen Version angezeigt, nur sind eben die externen Dateien nicht dabei.
2) Ausserdem werden Umlaute nicht richtig angezeigt. Irgendwie habe ich das Gefühl, ich habe den Quellcode irgendwo mal kaputt gemacht...
Hier natürlich noch die Codes:
Browser.java
Code:
package ch.andireas.calc_it1;
import java.io.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.*;
import org.apache.http.impl.client.*;
import ch.andireas.calc_it1.R;
import android.annotation.*;
import android.app.*;
import android.content.*;
import android.os.*;
import android.util.*;
import android.view.*;
import android.view.View.*;
import android.webkit.*;
import android.webkit.WebSettings.*;
import android.widget.*;
public class Browser extends Activity {
public String url;
public String response_str;
public DefaultHttpClient HTTPclient;
public HttpGet request;
public ResponseHandler<String> responseHandler;
public String website = "";
public String website_old = "";
private WebView webView;
EditText urlEditText;
WebViewClient myWebViewClient;
public boolean website1 = false;
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.browser_main);
webView = (WebView) findViewById(R.id.webView);
myWebViewClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
startDownload(url);
return false;
}
};
urlEditText = (EditText) findViewById(R.id.urlField);
urlEditText.setText("");
Button openUrl = (Button) findViewById(R.id.goButton);
WebSettings zoomenable = webView.getSettings();
zoomenable.setBuiltInZoomControls(true);
WebSettings wideviewenable = webView.getSettings();
wideviewenable.setUseWideViewPort(true);
webView.setWebViewClient(myWebViewClient);
openUrl.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
url = urlEditText.getText().toString();
if ((url.startsWith("https://")) || (url.startsWith("http://"))) {
website = url;
} else if (url.startsWith("www.")) {
website = "http://" + url;
urlEditText.setText("http://" + url);
} else if (url != "") {
website = "https://google.ch/search?q=" + url;
}
WebSettings settings = webView.getSettings();
settings.setLoadsImagesAutomatically(true);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(false);
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
settings.setDefaultTextEncodingName("UTF-8");
Thread codeThread = new Thread(new quellcode());
codeThread.start();
}
});
}
private void startDownload(final String url) {
Downloader.DownloadCompleteListener dcl = new Downloader.DownloadCompleteListener() {
@Override
public void onDownloadComplete(final String result) {
FileOutputStream outputStream;
try {
outputStream = openFileOutput("Website1.txt", Context.MODE_PRIVATE);
outputStream.write(result.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
webView.post(new Runnable(){
@Override
public void run() {
webView.loadDataWithBaseURL(url, result ,"text/html","UTF-8",null);
}
});
}
};
Downloader downloader = new Downloader(dcl);
downloader.execute(url);
}
public class quellcode implements Runnable {
public void start() {
}
public void run() {
HTTPclient = new DefaultHttpClient();
request = new HttpGet(website);
final WebView webView = (WebView) findViewById(R.id.webView);
startDownload(website);
webView.post(new Runnable(){
@Override
public void run() {
webView.loadUrl(website);
}
});
responseHandler = new BasicResponseHandler();
}
}
}
Donloader.java
Code:
package ch.andireas.calc_it1;
import java.io.*;
import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.impl.client.*;
import android.os.*;
public class Downloader extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
response += downloadWebpage(url);
}
return response.toString();
}
private String downloadWebpage(String url) {
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String source = "";
String tmp;
int i = 1;
while ((tmp = reader.readLine()) != null) {
source += tmp;
i++;
}
return parsen(source);
} catch (IOException io) {
io.printStackTrace();
return "Error when downloading Webpage" + url;
}
}
public interface DownloadCompleteListener {
void onDownloadComplete(String result);
}
private DownloadCompleteListener dc = null;
public Downloader(DownloadCompleteListener dc) {
this.dc = dc;
}
@Override
protected void onPostExecute(String result) {
dc.onDownloadComplete(result);
}
public String parsen(String quellcode){
//Hier werden die img-Tags geparst und Javascript dazugeführt
return quellcode;
}
}
Ich danke für jede Hilfe!
Freundliche Grüsse Andireas99