您好,登錄后才能下訂單哦!
本文地址: http://blog.csdn.net/caroline_wendy/article/details/22280461
環境: Android 0.5.2 + gradle 1.11 + kindle fire
Download, 下載項目, 從Internet上下載資源, 并存入本地SD卡.
點擊Download按鈕, 下載圖片, 然后顯示下載內容, 可以點擊查看.
Download的具體設計:
位置: res->layout->activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="mzx.spike.download.app.MainActivity"> <Button android:id="@+id/download_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Download"/> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/download_button" /> </RelativeLayout>
位置: main->AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mzx.spike.download.app" > <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="mzx.spike.download.app.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
位置: java->package->MainActivity.java
package mzx.spike.download.app; import android.app.Activity; import android.app.DownloadManager; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MainActivity extends Activity { private static final String TAG = "Download"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button buttonDownload = (Button)findViewById(R.id.download_button); buttonDownload.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { myDownload(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } private void myDownload() { String serviceString = Context.DOWNLOAD_SERVICE; DownloadManager downloadManager; downloadManager = (DownloadManager) getSystemService(serviceString); Uri uri = Uri.parse("http://bizhi.zhuoku.com/2014/03/26/TAHITI/TAHITI02.jpg"); DownloadManager.Request request = new DownloadManager.Request(uri); request.setDestinationInExternalPublicDir("/Download", "file.jpg"); request.setVisibleInDownloadsUi(true); long reference = downloadManager.enqueue(request); Log.d(TAG, "Download Reference: " + reference); Cursor c = downloadManager.query(new DownloadManager.Query().setFilterById(reference)); if (c == null) { Toast.makeText(this, "Download not found!", Toast.LENGTH_LONG).show(); } else { c.moveToFirst(); Log.d(getClass().getName(), "Column_id : " + c.getLong(c.getColumnIndex(DownloadManager.COLUMN_ID))); Log.d(getClass().getName(), "Column_bytes_downloaded so far : " + c.getLong(c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR))); Log.d(getClass().getName(), "Column last modified timestamp : " + c.getLong(c.getColumnIndex(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP))); Log.d(getClass().getName(), "Column local uri : " + c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))); Log.d(getClass().getName(), "Column statue : " + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))); Log.d(getClass().getName(), "Column reason : " + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_REASON))); Toast.makeText(this, statusMessage(c), Toast.LENGTH_LONG).show(); } startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS)); } private String statusMessage(Cursor c){ switch(c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))){ case DownloadManager.STATUS_FAILED: return "Download failed"; case DownloadManager.STATUS_PAUSED: return "Download paused"; case DownloadManager.STATUS_PENDING: return "Download pending"; case DownloadManager.STATUS_RUNNING: return "Download in progress!"; case DownloadManager.STATUS_SUCCESSFUL: return "Download finished"; default: return "Unknown Information"; } } }
1. 在創建界面中, 填寫按鈕(button)的點擊事件(setOnClickListener), 觸發下載方法(myDownload);
2. DownloadManager 獲取下載的服務(Context.DOWNLOAD_SERVICE);
3. 設置下載的鏈接(uri), 設置存儲位置(setDestinationInExternalPublicDir), 顯示下載用戶接口(setVisibleInDownloadsUi);
4. 放置下載隊列, 開始下載, downloadManager.enqueue(request);
5. 通過游標獲取下載信息, downloadManager.query();
6. 輸出相應的下載信息(COLUMN_*), 和下載狀態(STATUS_*);
7. 顯示下載視圖(DownloadManager.ACTION_VIEW_DOWNLOADS);
注意:
存儲位置(setDestinationInExternalPublicDir), 需要提前設置, 否則無法查看文件, 存儲至content位置;
下載地址: http://download.csdn.net/detail/u012515223/7106567
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。