2017-04-10 112 views
0

我想下载视频文件时使用网页视图上的点击按钮,当我点击按钮它开始下载,但当我检查文件管理器里面没有任何内容。这是我的网址http://segoma.com/v.php?type=view&id=U5K8Q4F6DD,我必须下载视频。所以帮我解决这个问题。 我也检查了很多使用webview下载的方法,但不帮助我。使用webview下载视频文件

我已尝试下面的代码。

public class TestActivity extends Activity { 

    WebView webView; 
    String image_url; 

    @SuppressLint("SetJavaScriptEnabled") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.activity_test); 

     if (android.os.Build.VERSION.SDK_INT > 14) { 
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
     } 

     webView = (WebView) findViewById(R.id.webView_certy); 

     if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 

      if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 

      } else { 
       ActivityCompat.requestPermissions(this, 
         new String[]{ 
           Manifest.permission.WRITE_EXTERNAL_STORAGE 
         }, 23 
       ); 
      } 
     } 

     final String stone_barcodeno = getIntent().getStringExtra("url"); 

     if (stone_barcodeno.equals("")) { 
      Toast.makeText(this, "No image for this stone", Toast.LENGTH_SHORT).show(); 
     } else { 

      image_url = stone_barcodeno; 
      Log.d("1", image_url); 
      webView.loadUrl(image_url); 
      webView.setPadding(0, 0, 0, 0); 
      //webView.setInitialScale(getScale()); 
      webView.getSettings().setBuiltInZoomControls(true); 
      ///========================= 
      webView.setInitialScale(1); 
      webView.getSettings().setJavaScriptEnabled(true); 
      webView.getSettings().setLoadWithOverviewMode(true); 
      webView.getSettings().setUseWideViewPort(true); 
      webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 
      webView.setScrollbarFadingEnabled(false); 

     } 

     /* Defining a button click listener for the Download button */ 
     View.OnClickListener downloadsListener = new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       File direct = new File(Environment.getExternalStorageDirectory() + "/abc"); 

       if (!direct.exists()) { 
        if (!direct.mkdirs()) 
         Log.w("","Failed to create dir!"); 
       } 

       DownloadManager mgr = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
       Uri downloadUri = Uri.parse(image_url); 
       DownloadManager.Request request = new DownloadManager.Request(
         downloadUri); 
       request.setAllowedNetworkTypes(
         DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE) 
         .setAllowedOverRoaming(false).setTitle("abc") 
         .setDescription("Image certi Downloading...") 
         .setDestinationInExternalPublicDir("/abc", stone_barcodeno + "_certi" + ".jpg"); 
       mgr.enqueue(request); 
       Toast.makeText(TestActivity.this, "Image Downloaded Successfully on this Device.", Toast.LENGTH_LONG).show(); 
      } 
     }; 

     btn_download.setOnClickListener(downloadsListener); 
    } 
} 

httphandler.java

HttpHandler parser = new HttpHandler(); 
       updresponse = parser.makePostServiceCall(Static_url.Server_URL_New+""+Static_url.SignUp ,builder,parser.POST); 
public class HttpHandler { 

    static String response = null; 
    public static final int GET = 1; 
    public static final int POST = 2; 
    HttpURLConnection connection = null; 
    BufferedReader reader = null; 
    URL url = null; 

    public HttpHandler(){ 

    } 

    public String makeGetServiceCall(String reqUrl, int method) { 

     if (method == GET) { 

      try { 
       url = new URL(reqUrl); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.setReadTimeout(10000); 
       connection.setConnectTimeout(50000); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       //connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       connection.setRequestMethod("GET"); 
       connection.connect(); 

       int status = connection.getResponseCode(); 

       if (status == 200) { 

        reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
        StringBuilder builder = new StringBuilder(); 
        String line = ""; 

        while ((line = reader.readLine()) != null) { 

         builder.append(line); 
        } 

        response = builder.toString(); 

       } 


      } catch (ProtocolException e) { 
       e.printStackTrace(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return response; 

    } 



    public String makePostServiceCall(String reqUrl, Uri.Builder params, int method) { 

     if (method == POST) { 

      try { 
       url = new URL(reqUrl); 
       connection = (HttpURLConnection) url.openConnection(); 
       connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
       connection.setReadTimeout(10000); 
       connection.setConnectTimeout(50000); 

       connection.setRequestMethod("POST"); 
       connection.setDoInput(true); 
       connection.setDoOutput(true); 

       String query = params.build().getEncodedQuery(); 
       BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream())); 
       writer.write(query); 
       writer.flush(); 
       writer.close(); 

       connection.connect(); 

       int status = connection.getResponseCode(); 

       if (status == 200) { 
        reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
        StringBuilder builder = new StringBuilder(); 
        String line = ""; 

        while ((line = reader.readLine()) != null) { 
         builder.append(line); 
        } 
        response = builder.toString(); 
       }else if(status == 400){ 
        response="Invalid"; 
       }else if(status == 500){ 
        response="servererr"; 
       } 
      } catch (ProtocolException e) { 
       e.printStackTrace(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return response; 
    } 
} 

回答

0

您的位置下载视频,你为自己设定在这一行:

.setDestinationInExternalPublicDir("/abc", stone_barcodeno + "_certi" + ".jpg"); 

如果你不能找到该目录(ABC)将位置设置到您熟悉的位置,例如下载文件夹或使用getUriForDownloadedFile来获取您下载的文件目录。欲了解更多信息,请[本页](https://developer.android.com/reference/android/app/DownloadManager.Request.html#setDestinationInExternalFilesDir(android.content.Context,java.lang.String,java.lang.String))。

+0

我的问题是视频无法下载.issue不适用于创建目录@ mehranzamani –

+0

您的问题有点含糊。你可以在浏览器中使用复制网址下载它吗?你得到什么类型的错误? –

+0

我没有收到任何错误我想知道为什么下载管理器不适用于我的情况?为什么它不能下载视频? –