2017-04-07 5 views
0

私はwebviewに基づいてアプリケーションを作ろうとしています。これまでのところ、ファイルの入力をクリックしても何も起こらないことを除いて、すべて正常に動作します。 File Upload in WebView これは私のMainActivity.javaコードです:android studio webviewでHTMLファイルの入力を使用するにはどうすればよいですか?

package com.myapp.myapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 

public class MainActivity extends AppCompatActivity { 
    WebView wv; 
    private ProgressBar progressBar; 
    @Override 
    public void onBackPressed(){ 
     if(wv.canGoBack()){ 
      wv.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     wv = (WebView) findViewById(R.id.wv); 
     wv.getSettings().setJavaScriptEnabled(true); 
     wv.setFocusable(true); 
     wv.setFocusableInTouchMode(true); 
     wv.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
     wv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
     wv.getSettings().setDomStorageEnabled(true); 
     wv.getSettings().setDatabaseEnabled(true); 
     wv.getSettings().setAppCacheEnabled(true); 
     wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     wv.loadUrl("https://myapp.com"); 
     wv.setWebViewClient(new WebViewClient()); 

     progressBar = (ProgressBar) findViewById(R.id.progressbar); 

     wv.setWebChromeClient(new WebChromeClient(){ 
      @Override 
      public void onProgressChanged(WebView view, int progress) 
      { 
       progressBar.setProgress(0); 
       progressBar.setVisibility(View.VISIBLE); 
       MainActivity.this.setProgress(progress * 1000); 

       progressBar.incrementProgressBy(progress); 

       if(progress == 100){ 
        progressBar.setVisibility(View.GONE); 
       } 
      } 
     }); 
    } 
} 
+0

このエラーは何ですか?あなたはlogcatを投稿できますか? –

+0

この質問[WebViewでのファイルアップロード](http://stackoverflow.com/questions/5907369/file-upload-in-webview)も機能しません。あなたはアンドロイド2.3以上から5.0 +にopenFileChooserのすべてのバージョンを "オーバーライド"しましたか?そして、onActivityResultを適切に処理しますか? – jiashie

+0

openFileChooserは灰色で、こう言います。メソッド "openFileChooser(android.webkit.ValueCallback、java.lang.String)"は決して使用されません。私はそれが間違いだと思うが、私はそれを修正する方法を知らない。私はこれで新しいです。 –

答えて

0

あなたはWebChromeClient

openFileChooserを上書きする必要があるものも含め、この質問の、私はインターネット上で多くのソリューションで検索しましたが、どれも私のために働いていない
 public void openFileChooser(ValueCallback<Uri> uploadFile) {  
          Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
          i.addCategory(Intent.CATEGORY_OPENABLE); 
          i.setType("*/*"); 
          startActivityForResult(Intent.createChooser(i, getString(R.string.choose_upload)), FILE_SELECTED); 
     } 

クラスWebChormeClientにこのメソッドを追加します。

wv.setWebChromeClient(new WebChromeClient(){ 

      public void openFileChooser(ValueCallback<Uri> uploadFile) {  
          Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
          i.addCategory(Intent.CATEGORY_OPENABLE); 
          i.setType("*/*"); 
          startActivityForResult(Intent.createChooser(i, getString(R.string.choose_upload)), FILE_SELECTED); 
      } 


      @Override 
      public void onProgressChanged(WebView view, int progress) 
      { 
       progressBar.setProgress(0); 
       progressBar.setVisibility(View.VISIBLE); 
       MainActivity.this.setProgress(progress * 1000); 

       progressBar.incrementProgressBy(progress); 

       if(progress == 100){ 
        progressBar.setVisibility(View.GONE); 
       } 
      } 
     }); 
+0

openFileChooserは灰色で、次のように書かれています:メソッド "openFileChooser(android.webkit.ValueCallback、java.lang.String)"は使用されません –

+0

openFileChooserはグレーで、以下のようになります:メソッド "openFileChooser(android.webkit.ValueCallback ) "が使用されることはありません*** –

+0

。 'オーバーライド'が何であるかを理解する必要があります。 – xiaoyuan

関連する問題