Android-Download(下载)项目详解-创新互联

Download(下载) 项目 详解


成都创新互联主要从事成都网站设计、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务滦平,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

本文地址: http://blog.csdn.net/caroline_wendy/article/details/22280461

环境: Android 0.5.2 + gradle 1.11 + kindle fire

Download, 下载项目, 从Internet上下载资源, 并存入本地SD卡.

点击Download按钮, 下载图片, 然后显示下载内容, 可以点击查看.

Download的具体设计:

1. 修改activity_main.xml

位置: res->layout->activity_main.xml

      

添加一个按钮(Button), 使"hello_world"在其下方, 使用layout_below属性;

2. 修改AndroidManifest.xml

位置: main->AndroidManifest.xml

                                                                                                            

需要INTERNET, 连接互联网的权限; WRITE_EXTERNAL_STORAGE, 写入存储器的权限;

3. 修改MainActivity.java

位置: 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位置;

4. 运行程序


下载地址: http://download.csdn.net/detail/u012515223/7106567

Android - Download(下载) 项目 详解

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:Android-Download(下载)项目详解-创新互联
文章源于:http://azwzsj.com/article/pdjop.html