2017-06-03 11 views
-2

私は、Webサイトを読み込んだり開いたりするAndroidアプリを作成しました。ブラウザ上ではすべてOKですが、アプリでは画像のアップロードが自分の携帯電話の写真を開いていないので、アップロードする画像を選択することができます。これはどのように解決するのですか?Android App - ファイルを開くことができないwebview

package com.example.opex.shoutout; 
 

 
import android.content.Intent; 
 
import android.graphics.Bitmap; 
 
import android.net.Uri; 
 
import android.support.v7.app.AppCompatActivity; 
 
import android.os.Bundle; 
 
import android.view.KeyEvent; 
 
import android.view.View; 
 
import android.webkit.WebResourceRequest; 
 
import android.webkit.WebView; 
 
import android.webkit.WebViewClient; 
 
import android.widget.ProgressBar; 
 

 
public class MainActivity extends AppCompatActivity { 
 

 

 
    WebView webView; 
 
    ProgressBar progressBar; 
 

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

 
     webView = (WebView) findViewById(R.id.webView); 
 
     progressBar = (ProgressBar) findViewById(R.id.progressBar); 
 

 
     webView.getSettings().setJavaScriptEnabled(true); 
 
     webView.setWebViewClient(new MainActivity.myWebClient()); 
 

 

 
     webView.loadUrl("http://rms.irsglobal.net/mobile/"); 
 

 

 
     webView.setWebViewClient(new WebViewClient(){ 
 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
 

 
       String url2="http://rms.irsglobal.net/mobile/"; 
 
       // all links with in ur site will be open inside the webview 
 
       //links that start ur domain example(http://www.example.com/) 
 
       if (url != null && url.startsWith(url2)){ 
 
        return false; 
 
       } 
 
       // all links that points outside the site will be open in a normal android browser 
 
       else { 
 
        view.getContext().startActivity(
 
          new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
 
        return true; 
 
       } 
 
      } 
 
     }); 
 

 

 

 
    } 
 

 

 
    public class myWebClient extends WebViewClient 
 
    { 
 
     @Override 
 
     public void onPageFinished(WebView view, String url) { 
 
      super.onPageFinished(view, url); 
 
      progressBar.setVisibility(View.GONE); 
 
     } 
 

 
     @Override 
 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
 
      super.onPageStarted(view, url, favicon); 
 
     } 
 
     
 

 
     /*@Override 
 
     public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
 
      return super.shouldOverrideUrlLoading(view, request); 
 
     }*/ 
 
    } 
 

 
    @Override 
 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
 

 
     if(keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()){ 
 
      webView.goBack(); 
 
     } 
 
     return super.onKeyDown(keyCode, event); 
 
    } 
 
}

+0

あなたは、もう少し一般的な状況であるかについて正確にする必要があります。例えば、ウェブサイトはどうですか? – markusian

答えて

1

全作業コード:)

public class MyWb extends Activity { 
/** Called when the activity is first created. */ 

WebView web; 
ProgressBar progressBar; 

private ValueCallback<Uri> mUploadMessage; 
private final static int FILECHOOSER_RESULTCODE=1; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
            Intent intent) { 
    if(requestCode==FILECHOOSER_RESULTCODE) 
    { 
    if (null == mUploadMessage) return; 
      Uri result = intent == null || resultCode != RESULT_OK ? null 
        : intent.getData(); 
      mUploadMessage.onReceiveValue(result); 
      mUploadMessage = null; 
    } 
    } 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    web = (WebView) findViewById(R.id.webview01); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

    web = new WebView(this); 
    web.getSettings().setJavaScriptEnabled(true); 
    web.loadUrl("http://www.script-tutorials.com/demos/199/index.html"); 
    web.setWebViewClient(new myWebClient()); 
    web.setWebChromeClient(new WebChromeClient() 
    { 
      //The undocumented magic method override 
      //Eclipse will swear at you if you try to put @Override here 
     // For Android 3.0+ 
     public void openFileChooser(ValueCallback<Uri> uploadMsg) { 

      mUploadMessage = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("image/*"); 
      MyWb.this.startActivityForResult(Intent.createChooser(i,"File Chooser"), FILECHOOSER_RESULTCODE); 

      } 

     // For Android 3.0+ 
      public void openFileChooser(ValueCallback uploadMsg, String acceptType) { 
      mUploadMessage = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("*/*"); 
      MyWb.this.startActivityForResult(
      Intent.createChooser(i, "File Browser"), 
      FILECHOOSER_RESULTCODE); 
      } 

     //For Android 4.1 
      public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){ 
       mUploadMessage = uploadMsg; 
       Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
       i.addCategory(Intent.CATEGORY_OPENABLE); 
       i.setType("image/*"); 
       MyWb.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MyWb.FILECHOOSER_RESULTCODE); 

      } 

    }); 


    setContentView(web); 


} 

public class myWebClient extends WebViewClient 
{ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     // TODO Auto-generated method stub 

     view.loadUrl(url); 
     return true; 

    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 

     progressBar.setVisibility(View.GONE); 
    } 
} 

//flipscreen not loading again 
@Override 
public void onConfigurationChanged(Configuration newConfig){   
    super.onConfigurationChanged(newConfig); 
} 

// To handle "Back" key press event for WebView to go back to previous screen. 
/*@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) { 
     web.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
}*/ 
} 
+0

あなたが役に立つと思ったら答えとしてマークしてください。 –

+0

レムこれを試してください –

+0

確かに..ハッピーコーディング:) –

関連する問題