Browser als App

  • 25 Antworten
  • Neuester Beitrag
Diskutiere Browser als App im Android App Entwicklung im Bereich Betriebssysteme & Apps.
M

MarkusxX

Neues Mitglied
Hallo, ich habe eine Webseite mit einer Mobile Seite ...

Nun wolte ich eine App erstellen diese soll können :

Beim öffnen öffnet sie eigentlich nur den Mobile Link der Seite wie ein Browser nun gibt es aber das Problem wenn man auf ein Link klickt wird man ja in der App wo anders hin geleitet und das will ich nicht sondern man soll nur auf der seite bleiben und externe links sollen extra im browser öffnen.

So wie die facebook app.


Lg
 
joshua1996

joshua1996

Stammgast
Eventuell habe ich missverstanden was du meinst, aber ich Versuche es trotzdem mal :D
Du möchtest einfach einen Link in einem Webview im selbem Webview öffnen, ohne dieses Pop-Up mit welchem Browser man den Link öffnet?

Dann einfach folgendes:

Code:
            WebView timeTable = (WebView) findViewById(R.id.webView1);
            timeTable.loadUrl(URL);
            timeTable.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
                    viewx.loadUrl(urlx);
                    return false;
                }
            });
Damit öffnest du alle Links im Webview. Du wirst aber nicht mehr "zurück" navigieren können, also eventuell musst du auf der mobilen Web-Version eine Möglichkeit anbieten, eine Seite zurück zu kommen.

Hoffe es hat dir geholfen ;)
 
M

MarkusxX

Neues Mitglied
Genau, so das ich im Webview meine Social App habe die Php basierent ist. Wenn aber jemand z.B. ein Youtube link postet und man darauf klickt dan wird man ja dort wo die App eigentlich ist im Webview auf YOutube geleitet und genau das will ich verhindern. Das man nur auf meiner webseite navigieren kann und keine anderen links öffnen kann die Extern sind und wenn man sie öffnen will so das sich der richtige Android browser öffnet. Habe leider nicht so viel ahnung von Eclipse :/
 
joshua1996

joshua1996

Stammgast
Der Code sollte damit im Optimalfall auch laufen, musst du mal austesten und gucken ob es geht ;)
 
M

MarkusxX

Neues Mitglied
Ich muss überhaupt erstmal sehen wie und wo ich ein Code einsetzen und welche Api usw^^
 
joshua1996

joshua1996

Stammgast
Kurze Verständnis-Frage: Du hast die App mit dem Webview schon, oder existiert die noch gar nicht?
Wenn du die schon hast, dann schreib meinen vorhin geposteten Code einfach im onCreate, nachdem du den Webview der ID zugeordnet hast.
 
M

MarkusxX

Neues Mitglied
Habe leider noch garnichts fertig ich bin noch dabei mit den API ein wenig zu lernen bzw. erstmal zu wissen wie ich das Projekt erstelle etc...
 
Z

Zoopa

Stammgast
Was du vorhast ist genau so in der offiziellen Doku, siehe HIER.

In diesem Beispiel der Host einfach als example.com angegeben, den kannst du deinem Hostnamen anpassen. Damit werden alle Links der Domain (z.B. example.com/page1.php, example.com/forum/login.php, etc.) innerhalb der WebView geladen, alle anderen Links (z.B. youtube.com) nicht.
 
M

MarkusxX

Neues Mitglied
Ok Danke, jetzt muss ich nur noch rausfinden wie.... C&P ist eben nicht gut :/


Code:
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView timeTable = (WebView) findViewById(R.id.webView1);
        timeTable.loadUrl(URL);
        timeTable.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
                viewx.loadUrl(urlx);
                return false;
            }
        });
    }


    @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;
    }
    
}
 
joshua1996

joshua1996

Stammgast
Den Webview Client brauch er eigentlich nicht zu überschreiben, erstell einfach ein neues Projekt (ich nehme immer die API Version von ICS, wegen design, AchtionBar und sowas).
Dann einfach in ein Layout einen WebView ziehen und den Text den ich oben gepostet habe in den onCreate-Teil reinschieben.

Wenn du generell erstmal einen Einstieg ins App programmieren brauchst, dann guck mal hier https://www.youtube.com/channel/UCKsf9ZSzkLdIrmofQi28jjQ
Die sind gut erklärt und die Folge ist nicht ganz so umfangreich und kompliziert.

Solltest du noch Fragen haben, entweder einen Thread suchen, wo das Thema behandelt wird, wir wollen ja nicht zu viel OT hier machen (sonst wird ein Mod böse ;) ).
Ansonsten schreib mir eine PN, vlt kann ich dir ja bei deinem Problem helfen.

EDIT: ich denke mal du hast im activity_main-Layout auch nen Weview mit der ID webView1? :D

Und @Zoopa, danke für den Link, jetzt weiß ich wie ich den zurück-Key zum navigieren nutzten kann, sollte besser erstmal alles in der Doku von Google lesen :thumbsup:
 
Zuletzt bearbeitet:
M

MarkusxX

Neues Mitglied
Ich bekomme es leider nicht hin nur fehler :(
 
joshua1996

joshua1996

Stammgast
Wenn du Fehler sagst, dann bitte etwas genauer. Kannst du die App auf dem Handy via ADB installieren, oder kommst du erst gar nicht so weit?
Was wird den rot Unterstrichen?
 
M

MarkusxX

Neues Mitglied
Es ist nun so das :

Habe Permision internet hinzugefügt nur leider kommt :

Webseite nicht verfügbar :(


Kann man webview noch als fullscreen machen?
 
Zuletzt bearbeitet:
joshua1996

joshua1996

Stammgast
M

MarkusxX

Neues Mitglied
Code:
package com.example.piewcom;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WebView timeTable = (WebView) findViewById(R.id.webView1);
        timeTable.loadUrl("http://www.***ex.php?do=/mobile/");
        timeTable.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView viewx, String urlx) {
                viewx.loadUrl(urlx);
                return false;
            }
        });
    }


    @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;
    }
    
}
Kann man das noch fullscreen machen das Webview da es ja nur an den rändern fehlt.
 
joshua1996

joshua1996

Stammgast
Läd der Webview jetzt die Website?
Was die Größe angeht, der Webview muss wissen, das er an alle Ecken ran soll. Öffne also mal das Layout "main" in der XML-Ansicht, und füge dem WebView folgende Elemente hinzu

Code:
            android:layout_alignParentBottom="true"
	    android:layout_alignParentLeft="true"
	    android:layout_alignParentRight="true"
	    android:layout_alignParentTop="true"
Damit weiß jetzt der WebView das er an alle Ecken ran soll.

EDIT: Deinen Webview musst du nicht timeTable nennen :D Den Code habe ich aus meiner App kopiert, die ich aus langeweile beim Praktikum für meine Schule geschrieben hab (um den Stundenplan (timetable) abzurufen) ;) Kannst ihn umbennen, musst nicht, ist aber für die Überschaubarkeit oft wichtig
 
Zuletzt bearbeitet:
M

MarkusxX

Neues Mitglied
Ah ok ich habe Botton vergessen^^ //

So nun geht alles :

Nur das Wichtigste Problem ich kann irgendwie keine "Scripts" ausführen meiner Webseite. diese geht mit .js


Habe aber nochmal ne Frage dazu :

Mein Mobile Web App hatt folgendes im Order mit : eine Manifest Datei :

Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.vinatay.PFoxApp" android:versionCode="1"
    android:versionName="1">
    <uses-sdk android:minSdkVersion="8" />

    <!-- TI_MANIFEST -->

    <application android:icon="@drawable/appicon"
        android:label="PFoxApp" android:name="PfoxappApplication"
        android:debuggable="false">

        <!-- TI_APPLICATION -->

        <activity android:name=".PfoxappActivity"
            android:label="PFoxApp" android:theme="@style/Theme.Titanium"
            android:configChanges="keyboardHidden"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
        android:name="ti.modules.titanium.media.TiVideoActivity"
        android:configChanges="keyboardHidden"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        />

        <activity 
        android:name="ti.modules.titanium.media.TiCameraActivity"
        android:configChanges="keyboardHidden"
        android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
        android:screenOrientation="portrait"
    />

        <activity android:name="org.appcelerator.titanium.TiActivity"
            android:configChanges="keyboardHidden"
            android:screenOrientation="portrait" />
        <activity android:name="org.appcelerator.titanium.TiTranslucentActivity"
            android:configChanges="keyboardHidden"
            android:theme="@android:style/Theme.Translucent" 
            android:screenOrientation="portrait"/>
        <activity android:name="org.appcelerator.titanium.TiModalActivity"
            android:configChanges="keyboardHidden"
            android:theme="@android:style/Theme.Translucent" 
            android:screenOrientation="portrait"/>
        <activity android:name="ti.modules.titanium.ui.TiTabActivity"
            android:configChanges="keyboardHidden"
            android:screenOrientation="portrait" />
        <activity android:name="ti.modules.titanium.ui.android.TiPreferencesActivity"
            android:screenOrientation="portrait" />

        <service android:name="org.appcelerator.titanium.analytics.TiAnalyticsService"
            android:exported="false" />
        

    </application>

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    

</manifest>
Kann man damit was anfangen ?

PS : Funktioniert alles soweit nur wenn ich auf Google inerhalb meiner App klicke komm ich zu google was nicht sein solte.
 
M

MarkusxX

Neues Mitglied
Also ich habe ja ne Mobile App und man soll ja auf MEINER webseite bleiben d.h. man Postet ein Link und wenn man drauf klickt soll sich der browser öffnen aber man soll trotzdem auf meiner app und webseite bleiben wie bei der Facebook app.

So das man nur auf meiner webseite navigieren kann und diese links nutzen kann die intern sind alle externen verweise solten sich im normalen browser öffnen

Habs hinbekommen mit Java. Danke :)
 
Zuletzt bearbeitet:
joshua1996

joshua1996

Stammgast
Ich stehe grade etwas auf dem Schlauch :D
Du hast eine (mobile) Website geschrieben, auf der man was posten/teilen was auch immer machen kann. Wenn jemand einen Link gepostet hat, soll sich dieser Link in deiner App, genauer gesagt in deinem Webview öffnen?
Wir deine gesamte Website in diesem Webview dargestellt, und wenn man dann auf einen Link in diesem Webview klickt, soll sich der entsprechende Link in deiner mobilen Website in dem Webview geöffnet werden?

Wenn du das so haben willst, dann müsstest du an der mobilen Webversion etwas verändern, so das du alle externen Links in deiner Seite öffnest (ich denke mal ein iFrame sollte genügen?).

Oder habe ich da was falsche verstanden? :D
 
Ähnliche Themen - Browser als App Antworten Datum
2
6
1