Как загрузить файл с помощью Android Downloader по умолчанию?

Как загрузить файлы с помощью Android-загрузчика? (Загрузчик, который использует WebBrowser).

Я пробовал что-то вроде этого:

Intent i = new Intent(Intent.ACTION_VIEW , Uri.parse("MyUrl")); startActivity(i); 

Любой лучший способ?

редактировать

Я использую Android 2.2

Вам нужно использовать HttpUrlConnection для этого на Android 2.2 и ниже. В Интернете есть очень подробный учебник, в котором показано, как это сделать (с диалоговым окном прогресса).

Помните, что вы должны использовать AsyncTask или Thread чтобы гарантировать, что вы не блокируете поток пользовательского интерфейса во время фактической загрузки!

Ну вот.

 import android.app.Activity; import android.app.DownloadManager; import android.app.DownloadManager.Query; import android.app.DownloadManager.Request; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.ImageView; public class DownloadManagerActivity extends Activity { private long enqueue; private DownloadManager dm; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) { long downloadId = intent.getLongExtra( DownloadManager.EXTRA_DOWNLOAD_ID, 0); Query query = new Query(); query.setFilterById(enqueue); Cursor c = dm.query(query); if (c.moveToFirst()) { int columnIndex = c .getColumnIndex(DownloadManager.COLUMN_STATUS); if (DownloadManager.STATUS_SUCCESSFUL == c .getInt(columnIndex)) { ImageView view = (ImageView) findViewById(R.id.imageView1); String uriString = c .getString(c .getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); view.setImageURI(Uri.parse(uriString)); } } } } }; registerReceiver(receiver, new IntentFilter( DownloadManager.ACTION_DOWNLOAD_COMPLETE)); } public void onClick(View view) { dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); Request request = new Request( Uri.parse("url for file to download")); enqueue = dm.enqueue(request); } public void showDownload(View view) { Intent i = new Intent(); i.setAction(DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity(i); } } 

Не забудьте добавить android.permission.internet в манифест.

Если вы хотите загрузить его на SD-карту пользователя с URL-адреса, вы можете просто открыть его в интернет-браузере по умолчанию.

 String url = "https://appharbor.com/assets/images/stackoverflow-logo.png"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 

(Код из этого вопроса)

Затем запустится браузер Android, и файл (в данном случае изображение) будет загружен.

Да, вы не можете выполнять сетевую операцию в основном потоке. Вы можете посмотреть этот репозиторий для загрузки файла.