Java tutorial
//package com.java2s; /* * Copyright 2015 OpenMarket Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import android.annotation.SuppressLint; import android.app.DownloadManager; import android.content.Context; import android.os.Build; import android.os.Environment; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class Main { /** * Save a media URI into the download directory * @param context the context * @param srcFile the source file. * @param filename the filename (optional) * @return the downloads file path */ @SuppressLint("NewApi") public static String saveMediaIntoDownloads(Context context, File srcFile, String filename, String mimeType) { String fullFilePath = saveFileInto(context, srcFile, Environment.DIRECTORY_DOWNLOADS, filename); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { if (null != fullFilePath) { DownloadManager downloadManager = (DownloadManager) context .getSystemService(Context.DOWNLOAD_SERVICE); try { File file = new File(fullFilePath); downloadManager.addCompletedDownload(file.getName(), file.getName(), true, mimeType, file.getAbsolutePath(), file.length(), true); } catch (Exception e) { } } } return fullFilePath; } /** * Copy a file into a dstPath directory. * The output filename can be provided. * The output file is not overriden if it is already exist. * @param context the context * @param sourceFile the file source path * @param dstDirPath the dst path * @param outputFilename optional the output filename * @return the downloads file path if the file exists or has been properly saved */ public static String saveFileInto(Context context, File sourceFile, String dstDirPath, String outputFilename) { // sanity check if ((null == sourceFile) || (null == dstDirPath)) { return null; } // defines another name for the external media String dstFileName; // build a filename is not provided if (null == outputFilename) { // extract the file extension from the uri int dotPos = sourceFile.getName().lastIndexOf("."); String fileExt = ""; if (dotPos > 0) { fileExt = sourceFile.getName().substring(dotPos); } dstFileName = "MatrixConsole_" + System.currentTimeMillis() + fileExt; } else { dstFileName = outputFilename; } File dstDir = Environment.getExternalStoragePublicDirectory(dstDirPath); if (dstDir != null) { dstDir.mkdirs(); } File dstFile = new File(dstDir, dstFileName); // Copy source file to destination FileInputStream inputStream = null; FileOutputStream outputStream = null; try { // create only the if (!dstFile.exists()) { dstFile.createNewFile(); inputStream = new FileInputStream(sourceFile); outputStream = new FileOutputStream(dstFile); byte[] buffer = new byte[1024 * 10]; int len; while ((len = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, len); } } } catch (Exception e) { dstFile = null; } finally { // Close resources try { if (inputStream != null) inputStream.close(); if (outputStream != null) outputStream.close(); } catch (Exception e) { } } if (null != dstFile) { return dstFile.getAbsolutePath(); } else { return null; } } }