2017-04-07 5 views
0

also habe ich eine website gemacht, die einfach per webview in eine mobile app verwandelt werden kann. wenn ich die apk das erste mal installiere, funktioniert es ganz gut, aber das problem ist danach, das web ist nur statisch oder es ist nicht mehr geladen.Wie kann ich eine Webansicht aktualisieren?

es öffnen Sie einfach den gleichen Inhalt wie das erste Mal, wenn ich es installiere, obwohl ich bereits die gesamte Website ändern. Ich weiß nicht, ob das Problem mit dem Webview oder mit dem Android war.

Ich habe bereits versucht, eine automatische Aktualisierung/Autoreload-Funktion in PHP, aber es funktioniert nur in mobilen Browser und funktionierte nicht in meiner App ... jemand weiß jede Lösung?

da ich ein Neuling in android developping bin, werde ich den ganzen Code meiner Haupttätigkeit setzen

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

//initializing WebView 
private WebView mwebView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 

    //WebView 
    mwebView = (WebView) findViewById(R.id.myWebView); 
    WebSettings webSettings = mwebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    //improve webView performance 
    mwebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
    mwebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
    mwebView.getSettings().setAppCacheEnabled(true); 
    mwebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webSettings.setDomStorageEnabled(true); 
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); 
    webSettings.setUseWideViewPort(true); 
    webSettings.setSavePassword(true); 
    webSettings.setSaveFormData(true); 
    webSettings.setEnableSmoothTransition(true); 


    mwebView.loadUrl("http://192.168.94.2/autorefresh/"); 
    //force links open in webview only 
    mwebView.setWebViewClient(new MyWebviewClient()); 

} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

@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(); 


    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_home) { 
     mwebView.loadUrl("http://192.168.94.2/ee1/"); 
    } 
    if (id == R.id.nav_kolam) { 
     mwebView.loadUrl("http://192.168.94.2/ee1/listkolam.php"); 
    } 
    if (id == R.id.nav_pantai) { 
     mwebView.loadUrl("http://192.168.94.2/ee1/listpantai.php"); 
    } 
    if (id == R.id.nav_transaksi) { 
     System.exit(0); 
    } 
    if (id == R.id.nav_about) { 
     System.exit(0); 

    } 
    if (id == R.id.nav_keluar) { 
     System.exit(0); 
    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 


//bikin progress dialog 
private class MyWebviewClient extends WebViewClient { 
    //ProgressDialogue 
    @Override 

    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (Uri.parse(url).getHost().equals("192.168.94.2")) { 
      //open url contents in webview 
      return false; 
     } else { 
      //here open external links in external browser or app 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 

    } 
    ProgressDialog pd = null; 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     pd=new ProgressDialog(MainActivity.this); 
     pd.setTitle("Mohon Tunggu Sebentar"); 
     pd.setMessage("Website Loading.."); 
     pd.show(); 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     pd.dismiss(); 
     super.onPageFinished(view, url); 
    } 
} 


//bikin tombol back halaman 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK: 
       if (mwebView.canGoBack()) { 
        mwebView.goBack(); 
       } else { 
        finish(); 
       } 
       return true; 
     } 
    } 
    return super.onKeyDown(keyCode, event); 
}} 

ich bin mit nativen PHP

+0

Hoffe das ist, was Sie suchen [Link] (http://stackoverflow.com/questions/2465432/android-webview-completely-clear-the-cache) – fightingCoder

+0

tat das Entfernen der Cache zerstört auch die Sitzung? Da mein Web eine Login-Funktion hat und ich möchte, dass es so lange dauert, damit sich der Benutzer beim nächsten Öffnen der App nicht erneut anmelden muss. – wildape

+0

Hast du den Code ausprobiert? Ich bin mir nicht sicher, ob Sie die Sitzung in diesem Fall beibehalten können. – fightingCoder

Antwort

0

mwebView.loadUrl("about:blank"); mwebView.loadUrl("http://192.168.94.2/ee1/");

laden leere Seite vor Laden einer neuen URL Fügen Sie also mwebView.loadUrl hinzu ("about: blank"); vor all deinen if-else Fällen.

Möge dies helfen!

+0

Wo sollte ich den Code eingeben? Ich lege es über diesen Code mwebView = (WebView) findViewById (R.id.myWebView); WebSettings webSettings = mwebView.getSettings(); und machte meine App nicht reagiert , weil es das erste Mal ist, dass ich mobile App entwickeln – wildape

+0

@wildape wann möchten Sie die Webseite neu laden? – buzzingsilently

+0

eigentlich habe ich sechs navbar item, jeder von ihnen link zu verschiedenen seite von php. Ich möchte die Seite in jedem Artikel neu laden, wenn ich es mit Navbar Artikel öffnen – wildape

-1
webView.loadUrl("javascript:window.location.reload(true)"); 

Dies kann helfen, das Webview neu zu laden. Danke

+0

Wo sollte ich den Code eingeben? weil es das erste Mal ist, dass ich mobile App – wildape

+0

entwickle, fügen Sie es hinzu, nachdem Sie Ihr Webview erklärt haben –

0

Das webView speichert den gesamten Inhalt der Seite, so dass keine Bilder usw. heruntergeladen werden müssen. Damit Sie die Aktualisierungen erhalten, müssen Sie Ihre Dateien versionieren und eine Cache-Kontrolle = max- haben. Alter auf yout index.html Datei

Verwandte Themen