繁体   English   中英

Android:如何在Android中创建直接下载链接

[英]Android: How to create a direct download link in android

任何人都可以给我一个关于如何创建一个具有链接的textview的想法,当用户单击它时,设备会自动下载该链接中的文件

编辑:

这是正在处理的代码:

String link = "http://www.exampleurl.com/"+pref.getString("fsfile" + count, null);
    link = link.replaceAll(" ", "%20");
    fsfile.setText("Attached File");
    fsfile.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // starting new Async Task
            new DownloadFileFromURL().execute(link);
        }
    }); 

但似乎在.setOnClickListener内未标识String link

相当简单http://developer.android.com/reference/android/app/DownloadManager.html

示例: http//androidtrainningcenter.blogspot.co.at/2013/05/android-download-manager-example.html

并在单击textview后启动此方法(使用Handler或listener捕获)

/**
 * Start Download
 */
public void startDownload() {
    DownloadManager mManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
    Request mRqRequest = new Request(
            Uri.parse("http://androidtrainningcenter.blogspot.in/2012/11/android-webview-loading-custom-html-and.html"));
    mRqRequest.setDescription("This is Test File");
//  mRqRequest.setDestinationUri(Uri.parse("give your local path"));
    long idDownLoad=mManager.enqueue(mRqRequest);
}

但是请确保您是最小的。 在API 9上

请使用下面的代码onTextView onclick:

<Your TextView>.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // starting new Async Task
            new DownloadFileFromURL().execute(<Your URL String>);
        }
    }); 

DownloadFromURL.java

public class DownloadFileFromURL extends AsyncTask<String, String, String> {

/**
 * Before starting background thread
 * Show Progress Bar Dialog
 * */
@Override
protected void onPreExecute() {
    super.onPreExecute();
    showDialog(progress_bar_type);
}

/**
 * Downloading file in background thread
 * */
@Override
protected String doInBackground(String... f_url) {
    int count;
    try {
        URL url = new URL(f_url[0]);
        URLConnection conection = url.openConnection();
        conection.connect();
        // getting file length
        int lenghtOfFile = conection.getContentLength();

        // input stream to read file - with 8k buffer
        InputStream input = new BufferedInputStream(url.openStream(), 8192);

        // Output stream to write file
        OutputStream output = new FileOutputStream("/sdcard/downloadedfile.jpg");

        byte data[] = new byte[1024];

        long total = 0;

        while ((count = input.read(data)) != -1) {
            total += count;
            // publishing the progress....
            // After this onProgressUpdate will be called
            publishProgress(""+(int)((total*100)/lenghtOfFile));

            // writing data to file
            output.write(data, 0, count);
        }

        // flushing output
        output.flush();

        // closing streams
        output.close();
        input.close();

    } catch (Exception e) {
        Log.e("Error: ", e.getMessage());
    }

    return null;
}

/**
 * Updating progress bar
 * */
protected void onProgressUpdate(String... progress) {
    // setting progress percentage
    pDialog.setProgress(Integer.parseInt(progress[0]));
  }

/**
 * After completing background task
 * Dismiss the progress dialog
 * **/
@Override
protected void onPostExecute(String file_url) {
    // dismiss the dialog after the file was downloaded
    dismissDialog(progress_bar_type);

    // Displaying downloaded image into image view
    // Reading image path from sdcard
    String imagePath = Environment.getExternalStorageDirectory().toString() + "/downloadedfile.jpg";
    // setting downloaded into image view
    my_image.setImageDrawable(Drawable.createFromPath(imagePath));
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM