2017-12-07 2 views
-5

DONT MARK Duplizierung oder DOWNNVOTE AS ANDERE LÖSUNGEN AUF WEB unübersichtlich UND NICHT MIT MEINEM CODE ARBEITS<input type = "file"> funktioniert nicht in webview

So bin ich ein HTML/CSS Entwickler in einem Noob Bühne. Ich versuche, eine einfache Webview-App für meine Website zu erstellen. Nun, während ich ein Projekt von github für webview bekam, scheint es, dass der "Datei-Upload" in webview nicht funktioniert, aber im Browser wie ein Zauber wirkt. Hilf mir bitte. Auch wenn die ganze Absicht der App nur darin besteht, die Website in Android-App umzuwandeln, und wenn Sie denken, dass es ein Projekt auf github gibt, das für meinen Zweck einfach sein kann (Datei-Upload in Webview), dann können Sie mir den Link dazu geben! Vielen Dank!

Mein MainActivity.java:

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

 

 
public class MainActivity extends Activity { 
 

 
    private WebView mWebView; 
 

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

 
     mWebView = (WebView) findViewById(R.id.activity_main_webview); 
 

 
     // Force links and redirects to open in the WebView instead of in a browser 
 
     mWebView.setWebViewClient(new WebViewClient()); 
 

 
     // Enable Javascript 
 
     WebSettings webSettings = mWebView.getSettings(); 
 
     webSettings.setJavaScriptEnabled(true); 
 

 
     // Use remote resource 
 
     // mWebView.loadUrl("http://example.com"); 
 

 
     // Stop local links and redirects from opening in browser instead of WebView 
 
     // mWebView.setWebViewClient(new MyAppWebViewClient()); 
 

 
     // Use local resource 
 
     mWebView.loadUrl("file:///android_asset/www/index.html"); 
 
    } 
 

 
    // Prevent the back-button from closing the app 
 
    @Override 
 
    public void onBackPressed() { 
 
     if(mWebView.canGoBack()) { 
 
      mWebView.goBack(); 
 
     } 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.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); 
 
    } 
 
}

Antwort

0

Wie pro Ihre Erwartung, ich glaube, Sie schwere Aufgabe in Ihrem WebView aktivieren möchten. Dafür benötigen Sie ChromeClient,

mWebView.setWebChromeClient(new MyWebViewClient()); 

Und Ihre MyWebViewClient Klasse, wird

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

     mWebView = (WebView) findViewById(R.id.activity_main_webview); 

     // Force links and redirects to open in the WebView instead of in a browser 
     mWebView.setWebViewClient(new WebViewClient()); 
     mWebView.setWebChromeClient(new MyWebViewClient()); // HERE 

     // Enable Javascript 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     // Use remote resource 
     // mWebView.loadUrl("http://example.com"); 

     // Stop local links and redirects from opening in browser instead of WebView 
     // mWebView.setWebViewClient(new MyAppWebViewClient()); 

     class MyWebViewClient extends WebChromeClient { 
      @Override 
      public void onProgressChanged(WebView view, int newProgress) { 
       super.onProgressChanged(view, newProgress); 
      } 

      @Override 
      public void onReceivedTitle(WebView view, String title) { 
       super.onReceivedTitle(view, title); 
      }  
     } 

     // Use local resource 
     mWebView.loadUrl("file:///android_asset/www/index.html"); 
    } 

Hoffnung zu ermöglichen, dies hilft Ihnen!

+0

Wo sollte ich es einfügen? die erste Zeile? –

+0

siehe meine aktualisierte onCreste-Methode – Dhruv

+0

https://imgur.com/a/6vOXH –

Verwandte Themen