WebView zu Browser

  • 14 Antworten
  • Letztes Antwortdatum
weely

weely

Neues Mitglied
4
Hallo!
Ich habe eine App entwickelt, die mit einer Webview eine Internetseite (mobile Ansicht eines Wiki's) öffnet. Hier mein Problem: Wenn ich auf einen Link klicke, will mein handy Chrome öffnen um den Link anzuzeigen. Ich möchte aber, dass dies in der Webview meiner App geschiet. Wie mache ich das?

weely
 
Du musst die klicks auf die Links selber unterbrechen und weiterleiten.

zB. so:

Code:
private class SampleWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
 
Hi Flextrick!
Leider habe ich keine Ahnung wo ich das jetzt einbauen muss.
Hier die Activity der Webview:

Code:
package com.tick.wiki;

import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;

public class Webview extends Activity {
     
    private WebView webView;
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview);
 
        webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://tick.bplaced.net/index.php?title=Hauptseite");
 
    }
    
    
 
}


Könntest du mir vielleicht genau sagen wo dein Code hinmuss?
 
Code:
package com.tick.wiki;

import android.os.Bundle;
import android.app.Activity;
import android.webkit.WebView;

public class Webview extends Activity {
     
    private WebView webView;
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webview);
 
        webView = (WebView) findViewById(R.id.webView1);
        webView.setWebViewClient(new SampleWebViewCleint());
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://tick.bplaced.net/index.php?title=Hauptseite");
 
    }
    
  private class SampleWebViewClient extends WebViewClient {
     @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
     }
 }    
 
}
 
  • Danke
Reaktionen: weely
DANKE An Alle die mir so lieb geholfen haben! Jetzt funktioniert meine App!
Ihr seid die besten!:thumbsup::love::wubwub:
 
Hallo, habe gerade auch das Problem, dass alle Link im Browser geöffnet werden. Könnt ihr mir vielleicht helfen, den nachfolgenden Code dahingehend anzupassen, dass alle Link in der WebView-App geöffnet werden?

Code:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String url ="http://www.dealtipp.de/";
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        WebView view=(WebView) this.findViewById(R.id.webView);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG )
                        .setAction( "Action", null ).show();
            }
        });

    }
 
Lösung siehe oben.


Code:
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String url ="http://www.dealtipp.de/";
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        WebView view=(WebView) this.findViewById(R.id.webView);
        view.setWebViewClient(new SampleWebViewCleint());
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG )
                        .setAction( "Action", null ).show();
            }
        });

    }

private class SampleWebViewClient extends WebViewClient {
     @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
     }
 }  
}
 
Wenn ich den Code so wie oben von mir eingestellt einfüge (habe schon einiges damit versucht, will einfach nicht klappen), dann erhalte ich mehrere Fehlermeldungen wie z.B. "error: illegal start of expression". Für Android-Entwickler bzw. jemanden der sich damit etwas auskennt gehört der Umbau des von mir eingestellten Codes-Schnippsels sicherlich zum Basic-Knowhow, aber vielleicht mag mir ja doch jemand weiterhelfen, ohne irgendwelche unnötigen Verweise auf irgendwelche Basic-Script-Sprachen. Möchte doch bloß. dass alle Links in der WebView-Maske geöffnet werden, bedanke mich recht herzlich für die Hilfe. Vielen Dank
 
"illegal start of expression" - in deinen Code stimmt der Syntax nicht.

Die Lösung müsste eigentlich funktionieren.
Daneben frage ich mich, wo in den obigen Beiträge Hinweise zu "Basic-Script-Sprachen" befinden. Java ist vieles, aber keine Script-Sprache. Ohne Basics in Java und Android geht es nicht.

Und bevor Du dich weiter beschwerst, wäre es hilfreich, wenn du die kompletten Fehlermeldungen anfügst. Damit wir hier im Forum eine Chance haben, deinen Fehler zu finden.
 
Sry. hab es wohl falsch aufgenommen, habe nach einer Lösung gefragt und bekomme nur ein "Lösung siehe oben.". Das mit dem Hinweis auf die Basics war dann schon mal zur Prophylaxe gedacht, für den Fall, dass irgend ein komischer Spruch kommt ;-) Sry. nochmal

Übrigens ist Java laut Wikipedia doch eine Script-Sprache ;-)
JavaScript – Wikipedia oder ist Java und JavaScript was anderes?


Code:
package de.dealtipp.www.dealtipp;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String url ="http://www.dealtipp.de/";
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        WebView view=(WebView) this.findViewById(R.id.webView);
        view.setWebViewClient(new SampleWebViewCleint());
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG )
                        .setAction( "Action", null ).show();
            }
        });

    }

    private class SampleWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu. 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();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
 

Anhänge

  • fehler.JPG
    fehler.JPG
    27,3 KB · Aufrufe: 195
Java und Java - Script sind unterschiedliche Sprachen.
Java (Programmiersprache) – Wikipedia
JavaScript – Wikipedia

Unten ist eine korrigierte Fassung, du hast ein falsche Klammer gesetzt. Past und Copy funktioniert nur wirklich gut, wenn man weiß, was man tut. Eine gute Alternative zum jetzigen Thread wäre es, du lernst etwas Java. Ist nicht so schwer und macht sogar Spaß.

Code:
package de.dealtipp.www.dealtipp;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String url ="http://www.dealtipp.de/";
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        WebView view=(WebView) this.findViewById(R.id.webView);
        view.setWebViewClient(new SampleWebViewCleint());
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG )
                        .setAction( "Action", null ).show();
            }
        });

    }

    private class SampleWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
} // <--- zu viel , Klammer löschen.


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu. 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();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
 
  • Danke
Reaktionen: avals
Vielen Dank, jetzt hat es geklappt.

Java macht sicherlich Spaß, ich wüsste jetzt aber gar nicht wo ich mit dem Java-Lernen überhaupt beginnen soll und brauchte vorerst ja eigentlich auch nur diese eine WebView-App. Passe jetzt nur noch das Design meiner Seite per CSS an und dann sollte das erst mal so passen.

Und als nächstes werde ich mich dann auch noch etwas mit dem Xcode beschäftigen müssen, um einen ähnliche WebView-App auch für den Apple AppStore zu erstellen.

Danke nochmal für die Unterstützung.
 
Gern geschehen.

Noch eine Anmerkung zu Deiner Webapp So wie es sich anhört, lädst Du den kompletten Inhalt der App über das Internet. Das ist immer problematisch, weil viele User nur relativ kleines Datenvolumen (200 - 300 MB) bei ihren Mobilprovider gebucht haben.
Niemand freut sich, wenn er für 10€ ein Datenvolumen nach buchen muss.
 
Danke für den Hinweis. Daran hab ich noch gar nicht gedacht, muss mir dann vielleicht doch mal Java etwas näher anschauen ;-)
 
Zurück
Oben Unten