다운로드 매니저 (DownloadManager) 관련 옵션

프로그래밍/Android (Java)|2019. 1. 28. 09:38
반응형

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />



    private long enqueue;                        // 두개는 onCreate 상단에

    private DownloadManager dm;



String ready_filename = "test.mp3"

dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);

                    DownloadManager.Request request = new DownloadManager.Request(Uri.parse("http://sysdocu.tistory.com/" + load_ID + "/" + ready_filename));

                    request.setTitle(ready_filename);              // 다운로드 제목

                    request.setDescription("다운로드 중..");    // 다운로드 설명

                    request.setNotificationVisibility(1);  // 상단바에 완료 결과 놔둠. 0 은 안뜸

                    enqueue = dm.enqueue(request);
                    break;



==========================================

경우에 맞게 아래 내용 추가



1. 어플리케이션 설치 디렉토리 내부에 저장할 경우 (예 : /Android/data/com.tistory.sysdocu/files/Download/)

request.setDestinationInExternalFilesDir(WebViewActivity.this, Environment.DIRECTORY_DOWNLOADS, ready_filename);



2. 공용 다운로드 디렉토리에 저장할 경우 (/storage/emulated/0/Download/)

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, ready_filename);


* 공용 다운로드 디렉토리에 저장할 경우 퍼미션을 획득해야 하므로 아래 코드를 추가로 삽입합니다.


WebViewActivity.java 에서 (onCreate 내부에 작성)


        // 공용 디렉토리에 파일을 저장하기 위한 선작업

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {

            int PERMISSION_REQUEST_CODE = 1;

            if (ContextCompat.checkSelfPermission(WebViewActivity.this,

                    Manifest.permission.WRITE_EXTERNAL_STORAGE)

                    != PackageManager.PERMISSION_GRANTED) {


                if (ActivityCompat.shouldShowRequestPermissionRationale(WebViewActivity.this,

                        Manifest.permission.WRITE_EXTERNAL_STORAGE)) {

                } else {

                    ActivityCompat.requestPermissions(WebViewActivity.this,

                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},

                            PERMISSION_REQUEST_CODE);

                }

            }

        }







반응형

댓글()