0

WebView アクティビティを追加しました。ダウンロードしたフォルダーのうち、エンド ユーザーがアプリ経由でダウンロードするものを制御したいと考えています。ファイルは pdf ファイルになり、デフォルトのダウンロード フォルダーではなく、アプリが使用する特定のフォルダーに移動したいと考えています。

public class myweb extends Activity {

 private WebView myWebView;
 private String LOG_TAG = "AndroidWebViewActivity";

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


        myWebView = (WebView) findViewById(R.id.webView1);

        //enable Javascript
        myWebView.getSettings().setJavaScriptEnabled(true);

        //loads the WebView completely zoomed out
        myWebView.getSettings().setLoadWithOverviewMode(true);

        //true makes the Webview have a normal viewport such as a normal desktop browser
        //when false the webview will have a viewport constrained to it's own dimensions
        myWebView.getSettings().setUseWideViewPort(true);

        //override the web client to open all links in the same webview
        myWebView.setWebViewClient(new MyWebViewClient());
        myWebView.setWebChromeClient(new MyWebChromeClient());

        //Injects the supplied Java object into this WebView. The object is injected into the
        //JavaScript context of the main frame, using the supplied name. This allows the
        //Java object's public methods to be accessed from JavaScript.
        myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

        //load the home page URL
        //myWebView.loadUrl("http://demo.mysamplecode.com/Servlets_JSP/pages/androidWebView.jsp");
        myWebView.loadUrl("http://www.patonsyarns.com/pattern.php?PID=4521&cps=21191");


        myWebView.setDownloadListener(new DownloadListener() {
            public void onDownloadStart(String url, String userAgent,
                    String contentDisposition, String mimetype, long contentLength) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);

            }
        });

}



 private class MyWebViewClient extends WebViewClient {
     @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {
         if (Uri.parse(url).getHost().equals("demo.mysamplecode.com")) {
             return false;
         }
         Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
         startActivity(intent);
         return true;
     }
 }


 private class MyWebChromeClient extends WebChromeClient {

      //display alert message in Web View
      @Override
         public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
             Log.d(LOG_TAG, message);
             new AlertDialog.Builder(view.getContext())
              .setMessage(message).setCancelable(true).show();
             result.confirm();
             return true;
         }

     }

     public class JavaScriptInterface {
         Context mContext;

         // Instantiate the interface and set the context
         JavaScriptInterface(Context c) {
             mContext = c;
         }

         //using Javascript to call the finish activity
         public void closeMyActivity() {
             finish();
         }

     }

     //Web view has record of all pages visited so you can go back and forth
     //just override the back button to go back in history if there is page
     //available for display
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
             myWebView.goBack();
             return true;
         }
         return super.onKeyDown(keyCode, event);
     }

ユーザーがどのファイルをダウンロードするかは、それらが pdf ファイルであるということ以外にはわかりません。

どんな助けでも素晴らしいでしょうありがとう

4

1 に答える 1

1

唯一の解決策は、 DownloadListener を使用してイベントをキャッチし、ファイルを手動でダウンロードすることです。

ファイルの例をダウンロード: http://www.androidhive.info/2012/04/android-downloading-file-by-showing-progress-bar/

DownloadListener の例: DownloadListener の使用方法

于 2013-02-18T20:43:02.810 に答える