DownloadManager 파일 다운로드 기능 구현
5376 단어 DownloadManager다운로드 하 다.
파일 다운로드 에 대해 서 는 그다지 낯 선 내용 이 아 닐 수도 있 습 니 다.인터넷 작업 에서 다운로드 하 는 것 은 그 중의 하나 일 뿐 입 니 다.하지만 파일 다운로드 에 대해 서 는 할 말 이 많 습 니 다.오늘 은 다운로드 방식 으로 말씀 드 리 겠 습 니 다.
파일 다운 로드 는 여러 가지 방식 이 있 습 니 다.예 를 들 어 다 중 스 레 드 다운로드,단일 스 레 드 다운로드 등 이 있 습 니 다.저 는 처음에 파일 다운 로드 를 접 했 을 때 의 동 영상 을 보 았 습 니 다.그 중에서 다 중 스 레 드 다운로드 가 무엇 인지 말 했 습 니 다.그 다음 에 스스로 다운로드 류 를 써 서 파일 다운 로드 를 실 현 했 습 니 다.마지막 에 다운 로드 를 실현 할 수 있 지만.그러나 효과 가 그다지 좋 지 않 습 니 다.가끔 은 파일 을 다운로드 할 수 없 을 때 가 있 습 니 다.그 때 는 봉 인 된 도구 가 있어 서 다운 로드 를 도와 야 한다 고 생각 했 습 니 다.확실히 나중에 바 이 두 가 한 번 보 았 습 니 다.저 는 많은 제3자 jar 가방 을 찾 아 다운 로드 를 실 현 했 습 니 다.그 중에서 Afinal 프레임 워 크 는 제 가 계속 사용 하고 있 는 것 이 고 괜 찮 습 니 다.매번 제3자 의 물건 을 사용 하고 싶 지 않 습 니 다.안 드 로 이 드 시스템 은 자신 이 다운로드 한 도구 류 를 가지 고 있어 야 합 니 다.그리고 오늘 우리 가 말 할 DownloadManager 입 니 다.
DownloadManager 를 접 한 이 유 는 제 가 얼마 전에 음악 재생 기 를 쓰 고 있 었 기 때 문 입 니 다.인터넷 에서 노래 를 얻 고 다운로드 해 야 하기 때 문 입 니 다.이 럴 때 저 는 간단 한 다운로드 방식 을 찾 아서 이 를 알 게 되 었 습 니 다.그 사용 에 대해 구체 적 인 연 구 를 하지 않 고 자신의 응용 프로그램 에 만 사 용 했 습 니 다.지금 써 서 그때 어떻게 했 는 지 공유 해 보 세 요.
이루어지다
내 가 주로 관심 을 가 지 는 세 가지 내용:
어디서 왔 느 냐
어디 가세 요?
완료 후 작업
이 세 가지 내용 이 가장 중요 합 니 다.다음은 제 가 노래 한 곡 을 다운로드 해서 설명 하 겠 습 니 다.
우선 DownloadManager 의 인 스 턴 스 를 받 아야 합 니 다.시스템 이 제공 하 는 서비스 인 만큼 getSystemService 로 받 아야 합 니 다.
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager 대상 을 받 은 후에 우 리 는 다운로드 요청 이 필요 합 니 다.다운로드 한 정보(즉,'어디서 왔 습 니까?'어디로 갑 니까?')를 설정 해 야 합 니 다.다운로드 요청 은 DownloadManager 의 내부 클래스 Request 입 니 다.우리 가 Request 의 대상 이 되 었 습 니 다:DownloadManager.Request request=new DownloadManager.Request(Uri.parse(url);Request 의 구조 함수 가 들 어 오 는 것 을 볼 수 있 습 니 다.우 리 는 Uri 의 정적 방법 을 사용 하여 다운로드 한 Url 에 따라 Uri 대상 을 얻 습 니 다.이것 이 바로 우리 가 말 한'어디서 왔 습 니까?'입 니 다.
다음은 우리 가 호출 해 야 할 세 가지 방법 이 있 습 니 다.
setTitle(String title)
setDescription(String desc)
setNotificationVisibility(int flag)
그 중에서 setTitle 은 다운로드 제목 을 설정 하고 setDescription 은 다운로드 설명 을 설정 합 니 다.예제 도 는 다음 과 같 습 니 다.
그 중'노 바디'는 제목 이 고'원 더 걸 스'는 묘사 다.
setNotificationVisibility 방법 은 잘 말 해 야 합 니 다.매개 변 수 는 네 가지 상황 이 있 습 니 다.
Request.VISIBILITY_VISIBLE:다운로드 가 진행 되 는 동안 알림 표시 줄 에 다운로드 한 Notification 이 계속 표 시 됩 니 다.다운로드 가 완료 되면 이 Notification 은 삭 제 됩 니 다.이것 은 기본 매개 변수 값 입 니 다.
Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED:다운로드 과정 에서 알림 표시 줄 에 다운로드 한 Notification 이 계속 표 시 됩 니 다.다운로드 가 완료 되면 이 Notification 은 사용자 가 이 Notification 을 클릭 하거나 제거 할 때 까지 계속 표 시 됩 니 다.
Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION:다운로드 가 완료 되 어야 이 Notification 이 표 시 됩 니 다.
Request.VISIBILITY_HIDDEN:다운로드 요청 한 Notification 을 표시 하지 않 습 니 다.이 인 자 를 사용 하려 면 응용 목록 파일 에 DOWNLOAD 를 추가 해 야 합 니 다.WITHOUT_NOTIFICATION 권한.
우 리 는 필요 에 따라 적당 한 인 자 를 선택 합 니 다.다운로드 할 때 진 도 를 표시 하지 않 으 려 면 Request.VISIBILITY 를 설정 할 수 있 습 니 다.HIDDEN,이렇게 다운로드 할 때 우 리 는 알림 을 볼 수 없 지만 이런 나 쁜 점 은 다운로드 가 성 공 했 는 지 알 수 없다 는 것 이다.
“어디서 왔 느 냐 는 문제 가 해결 되 었 습 니 다.지금 우 리 는'어디로 가 느 냐'는 문 제 를 보 겠 습 니 다.setDestinationUri 라 는 함 수 는 다운로드 경 로 를 설정 하 는 데 사 용 됩 니 다.매개 변 수 는 Uri 대상 입 니 다.다음 과 같이 사용 합 니 다.
String path = "/storage/sdcard1/music/ - .mp3";
File file = new File(path);
Uri uri = Uri.fromFile(file);
request.setDestinationUri(uri);
이렇게 해서 우 리 는 다운로드 경 로 를 설정 했다. Request 가 설정 되 어 있 으 면 manager 를 호출 하 는 방법 으로 다운로드 할 수 있 습 니 다.
manager.enqueue(request);이 방법 은 다운로드 요청 을 한 대기 열 에 넣 고 다운로드 하기 시작 하 는 것 입 니 다.이 반환 값 은 다운로드 id 입 니 다.이번 다운 로드 를 유일 하 게 표시 하 는 데 사 용 됩 니 다.아래 에 서 는 이 id 를 사용 할 것 입 니 다.mDownloadID 로 기록 합 니 다.
마지막 으로 다운로드 가 완 료 된 후의 상황 만 남 았 습 니 다.다운로드 가 완 료 된 후에 우 리 는 조작 이 있 을 수 있 습 니 다.예 를 들 어 다운로드 가 완 료 된 후에 파일 을 여 는 등 소프트웨어 가 업그레이드 되 는 것 을 본 것 처럼 apk 파일 을 다운로드 한 후에 바로 설 치 를 열 수 있 습 니 다.이것 은 모두 다운로드 가 완 료 된 후의 작업 입 니 다.그러면 어떻게 실현 해 야 합 니까?
원래 DownloadManager 는 다운로드 가 끝 난 후에 라디오 를 보 냅 니 다.우 리 는 라디오 수신 기 를 등록 해서 라디오 를 받 으 면 우리 자신의 조작 을 할 수 있 습 니 다.
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long reference = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if (mDownloadID == reference){
Intent i = new Intent();
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setAction(Intent.ACTION_VIEW);
String type = "application/vnd.android.package-archive";
i.setDataAndType(Uri.fromFile(file),type);
mContext.startActivity(i);
}
}
};
mContext.registerReceiver(receiver, filter);
이렇게 해서 우 리 는 스스로 라디오 수신 기 를 등록 하여 다운로드 가 완 료 된 후에 보 내 는 방송 을 받 았 습 니 다.받 은 후에 우 리 는 바로 파일 을 열 었 습 니 다.코드 에서 저 는 apk 파일 을 열 었 습 니 다.즉,파일 형식 을'application/vd.android.package-archive'로 설정 하 였 습 니 다.그 중에서 mDownloadID 는 바로 우리 가 얻 은 다운로드 ID 입 니 다.이렇게 해서 우 리 는 파일 의 다운로드 와 열 림 을 실현 했다.작은 매듭
그 러 고 보 니 파일 다운로드 가 그리 복잡 한 것 은 아 닙 니 다.물론 우 리 는 코드 를 사용 하 는 각도 에 서 있 을 뿐 입 니 다.만약 에 우리 가 직접 다운로드 소스 를 쓰 게 한다 면 하하,어 쩔 수 없습니다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 에서 DownloadManager 가 파일 다운로드 인 스 턴 스 를 상세 하 게 설명 합 니 다.Android 에서 DownloadManager 가 파일 다운 로드 를 실현 합 니 다. 다운로드 하 다. 다운로드 링크 만 들 기 다운로드 가능 한 네트워크 환경 설정 WIFI 네트워크:DownloadManager...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.