DownloadManager下载文件
来源:互联网 发布:数据库系统分为哪几种 编辑:程序博客网 时间:2024/06/10 11:54
package com.gst.user.application;import android.app.DownloadManager;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.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.Toast;public class DownloadFileActivity extends AppCompatActivity implements View.OnClickListener{ Button button_start_download; Button button_cancel_download; Button button_view_history; Button button_query_state; DownloadManager mDownloadManager; long mDownloadReference; String mDownloadUri; DownloadCompleteReceiver mDownloadCompleteReceiver; private String Tag="DownloadFileActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_download_file); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); mDownloadManager=(DownloadManager)getSystemService(DOWNLOAD_SERVICE); button_start_download=(Button)findViewById(R.id.button_start_download); button_cancel_download=(Button)findViewById(R.id.button_cancel_download); button_view_history=(Button)findViewById(R.id.button_view_history); button_query_state=(Button)findViewById(R.id.button_query_state); mDownloadUri="http://img31.ddimg.cn/71/7/23043311-1_w.jpg"; mDownloadCompleteReceiver=new DownloadCompleteReceiver(); registerReceiver(mDownloadCompleteReceiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); button_start_download.setOnClickListener(this); button_cancel_download.setOnClickListener(this); button_view_history.setOnClickListener(this); button_query_state.setOnClickListener(this); } @Override public void onClick(View v) { int id=v.getId(); switch (id){ case R.id.button_start_download: Uri uri=Uri.parse(mDownloadUri); DownloadManager.Request request=new DownloadManager.Request(uri); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE); request.setTitle("下载图像"); request.setDescription("只想静静地下载..."); request.setDestinationInExternalFilesDir(getApplicationContext(), "/sdcard/images", "download_image.jpg"); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN); mDownloadReference=mDownloadManager.enqueue(request); setTitle("正在下载图像..."); break; case R.id.button_cancel_download: mDownloadManager.remove(mDownloadReference); break; case R.id.button_view_history: Intent intent=new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS); startActivity(intent); break; case R.id.button_query_state: DownloadManager.Query query=new DownloadManager.Query(); query.setFilterById(mDownloadReference); Cursor cursor=mDownloadManager.query(query); if (cursor.moveToFirst()){ checkstate(cursor); } break; default: break; } } private void checkstate(Cursor cursor) { int columnIndex=cursor.getColumnIndex(DownloadManager.COLUMN_STATUS); int status=cursor.getInt(columnIndex); int columnReason = cursor.getColumnIndex(DownloadManager.COLUMN_REASON); int reason = cursor.getInt(columnReason); int filenameIndex = cursor .getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME); String filename = cursor.getString(filenameIndex); String statusText = ""; String reasonText = ""; switch (status) { case DownloadManager.STATUS_FAILED: statusText = "STATUS_FAILED"; switch (reason) { case DownloadManager.ERROR_CANNOT_RESUME: reasonText = "ERROR_CANNOT_RESUME"; break; case DownloadManager.ERROR_DEVICE_NOT_FOUND: reasonText = "ERROR_DEVICE_NOT_FOUND"; break; case DownloadManager.ERROR_FILE_ALREADY_EXISTS: reasonText = "ERROR_FILE_ALREADY_EXISTS"; break; case DownloadManager.ERROR_FILE_ERROR: reasonText = "ERROR_FILE_ERROR"; break; case DownloadManager.ERROR_HTTP_DATA_ERROR: reasonText = "ERROR_HTTP_DATA_ERROR"; break; case DownloadManager.ERROR_INSUFFICIENT_SPACE: reasonText = "ERROR_INSUFFICIENT_SPACE"; break; case DownloadManager.ERROR_TOO_MANY_REDIRECTS: reasonText = "ERROR_TOO_MANY_REDIRECTS"; break; case DownloadManager.ERROR_UNHANDLED_HTTP_CODE: reasonText = "ERROR_UNHANDLED_HTTP_CODE"; break; case DownloadManager.ERROR_UNKNOWN: reasonText = "ERROR_UNKNOWN"; break; } break; case DownloadManager.STATUS_PAUSED: statusText = "STATUS_PAUSED"; switch (reason) { case DownloadManager.PAUSED_QUEUED_FOR_WIFI: reasonText = "PAUSED_QUEUED_FOR_WIFI"; break; case DownloadManager.PAUSED_UNKNOWN: reasonText = "PAUSED_UNKNOWN"; break; case DownloadManager.PAUSED_WAITING_FOR_NETWORK: reasonText = "PAUSED_WAITING_FOR_NETWORK"; break; case DownloadManager.PAUSED_WAITING_TO_RETRY: reasonText = "PAUSED_WAITING_TO_RETRY"; break; } break; case DownloadManager.STATUS_PENDING: statusText = "STATUS_PENDING"; break; case DownloadManager.STATUS_RUNNING: statusText = "STATUS_RUNNING"; break; case DownloadManager.STATUS_SUCCESSFUL: statusText = "STATUS_SUCCESSFUL"; reasonText = "Filename:\n" + filename; break; } Toast.makeText(this, statusText + "\n" + reasonText, Toast.LENGTH_LONG).show(); } private class DownloadCompleteReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(intent.getAction())){ long reference=intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID,-1); if (reference==mDownloadReference){ Toast.makeText(DownloadFileActivity.this,"文件下载完成.",Toast.LENGTH_SHORT).show(); setTitle("下载完成"); } Log.d(Tag,reference+":"+mDownloadReference); } } } @Override protected void onDestroy() { if (mDownloadCompleteReceiver!=null){ unregisterReceiver(mDownloadCompleteReceiver); } super.onDestroy(); }}
2.布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" 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" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_download_file" tools:context="com.gst.user.application.DownloadFileActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载文件" android:id="@+id/button_start_download" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="36dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消下载" android:id="@+id/button_cancel_download" android:layout_below="@+id/button_start_download" android:layout_centerHorizontal="true" android:layout_marginTop="41dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示下载历史" android:id="@+id/button_view_history" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查询下载状态" android:id="@+id/button_query_state" android:layout_below="@+id/button_view_history" android:layout_alignLeft="@+id/button_view_history" android:layout_alignStart="@+id/button_view_history" android:layout_marginTop="50dp" /></RelativeLayout>
0 0
- Android 下载文件 DownloadManager
- DownloadManager实现文件下载
- DownloadManager下载文件
- DownloadManager 文件下载
- DownloadManager 互联网通信-文件下载
- 使用DownloadManager进行文件下载
- 文件下载之使用DownloadManager
- 使用DownloadManager实现文件下载
- Android使用DownloadManager下载文件
- android webview downloadManager 文件下载管理
- android webview downloadManager文件下载管理
- 使用Android自带DownloadManager下载文件
- android开发(23)使用DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- android webview downloadManager文件下载管理
- 使用Android自带DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- 使用Android自带DownloadManager下载文件
- 理解vc维
- 把arduino当AVRISP烧写器Arduino给Arduino烧boot
- Android 内存泄露
- 【Android开发】wifi开关与wifi连接(密码连接)
- ARM上移植PHP5.5.30
- DownloadManager下载文件
- hibernate中文动态查询语句乱码问题
- Docker学习笔记(一)
- 25个Java机器学习工具和库
- Android 5.0(包含5.0以下版本) 获取栈顶应用程序包名
- linux用户组管理命令-31
- [IMX6Q]LCD LVDS driver 注册流程
- ios9 如何集成ios9 里面的3D Touch
- 单例模式