반응형
안드로이드 다운로드 매니저를 이용한 파일 다운로드....
리시버를 등록하여 줘서 사용하는것...
private long mDownloadReference; private DownloadManager mDownloadManager; private BroadcastReceiver receiverDownloadComplete; //다운로드 완료 체크 private BroadcastReceiver receiverNotificationClicked; //다운로드 시작 체크 if (mDownloadManager == null) { mDownloadManager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE); } Uri uri = Uri.parse(data); //data는 파일을 떨궈 주는 uri DownloadManager.Request request = new DownloadManager.Request(uri); request.setTitle("파일다운로드"); //다운로드 완료시 noti에 제목 request.setVisibleInDownloadsUi(true); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE); //모바일 네트워크와 와이파이일때 가능하도록 request.setNotificationVisibility( DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //다운로드 완료시 noti에 보여주는것 request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS + "/temp", "이미지파일.jpg"); //다운로드 경로, 파일명을 적어준다 mDownloadReference = mDownloadManager.enqueue(request); IntentFilter filter = new IntentFilter(DownloadManager.ACTION_NOTIFICATION_CLICKED); receiverNotificationClicked = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String extraId = DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS; long[] references = intent.getLongArrayExtra(extraId); for (long reference : references) { } } }; mContext.registerReceiver(receiverNotificationClicked, filter); IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE); receiverDownloadComplete = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { long reference = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); if(mDownloadReference == reference){ DownloadManager.Query query = new DownloadManager.Query(); query.setFilterById(reference); Cursor cursor = mDownloadManager.query(query); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS); int columnReason = cursor.getColumnIndex(DownloadManager.COLUMN_REASON); int status = cursor.getInt(columnIndex); int reason = cursor.getInt(columnReason); cursor.close(); switch (status){ case DownloadManager.STATUS_SUCCESSFUL : Toast.makeText(mContext, "다운로드 완료.", Toast.LENGTH_SHORT).show(); break; case DownloadManager.STATUS_PAUSED : Toast.makeText(mContext, "다운로드 중지 : " + reason, Toast.LENGTH_SHORT).show(); break; case DownloadManager.STATUS_FAILED : Toast.makeText(mContext, "다운로드 취소 : " + reason, Toast.LENGTH_SHORT).show(); break; } } } }; mContext.registerReceiver(receiverDownloadComplete, intentFilter);
반응형
'프로그램 > Android' 카테고리의 다른 글
둥근 프로그래스바 Circle ProgressBar (0) | 2016.09.26 |
---|---|
안드로이드 AsyncTask를 이용하여 파일 다운로드 (0) | 2016.09.07 |
java.lang.UnsatisfiedLinkError 와 안드로이드 라이브러리 추가 등등... (0) | 2016.06.22 |
Google Marker 안에 이미지 넣기 (0) | 2016.06.09 |
안드로이드 그래프 이미지 돌리기 (0) | 2016.02.19 |