2

Может кто-нибудь дать мне представление о том, как создать текстовое представление, которое имеет ссылку, и когда пользователь нажмет на него, файл с этой ссылки будет автоматически загружен устройствомAndroid: Как создать прямую ссылку для скачивания в android

EDIT:

вот код воздействовали на:

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); 
     } 
    }); 

но мне кажется String link не определен внутри .setOnClickListener

+0

Вот наш код Mr. @Avadhani Y. Что, кажется, проблема Вот? – Chad

+0

Вот наш код Mr. @Avadhani Y – Chad

+0

Объявить строку 'link' как глобальную переменную. Это должно работать ... –

ответ

2

Thats довольно легко http://developer.android.com/reference/android/app/DownloadManager.html

Пример: http://androidtrainningcenter.blogspot.co.at/2013/05/android-download-manager-example.html

И начать этот метод после нажатия TextView (Поймать с обработчиком или слушателя)

/** 
* 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

0

Пожалуйста, используйте код ниже OnClick из TextView:

<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)); 
} 

}