DownloadManager 사용 방법: 1
DownloadManager downloadManager = (DownloadManager) MainActivity.this.getSystemService(DOWNLOAD_SERVICE);
Uri uri = Uri.parse("http://www.apk3.com/uploads/soft/201504/vnuuuxvobiu.apk");
DownloadManager.Request request = new DownloadManager.Request(uri);
long download_id = downloadManager.enqueue(request);
//返回值download_id是一个比较重要的参数,主要用来查询
이상 의 절 차 는 비교적 간단 한 다운로드 코드 이다.
1. 이 파일 은 시스템 파일 다운로드 의 기본 경로 에 저 장 됩 니 다.
2. 그리고 인터넷 환경 에 상 관 없 이 (와 이 파이, 모 바 일) 다운 로드 를 실행 합 니 다.
3. 휴대 전화 에 인터넷 연결 이 없 을 때 다운로드 작업 은 수행 되 지만 '연결 대기' 상태 에 있 고 휴대 전화 네트워크 연결 이 원활 해 지면 자동 으로 다운로드 작업 이 시 작 됩 니 다.
4. 다운로드 과정 에서 네트워크 연결 을 중단 하고 '연결 대기' 상태 에 있 으 며 네트워크 가 원활 해 지면 자동 으로 다운로드 작업 이 시 작 됩 니 다.
5. 경로 에 이 파일 이 이미 존재 할 때 자동 으로 교체 방식 으로 이름 을 짓 습 니 다.
6. 같은 작업 을 여러 번 반복 하면 서 다운로드 할 수 있 습 니 다.
7. 다운로드 한 연결 이 잘못 되면 Notification 은 '연결 대기 상태' 로 계속 멈 추고 수 동 으로 제거 할 수 없습니다.
다운로드 위치 및 파일 이름 지정
request.setDestinationInExternalFilesDir(context,"TestDownload","Test.apk");
request.setDestinationInExternalPublicDir("TestDownload","Test.apk");
이 두 가지 방법의 뒤의 두 매개 변 수 는 각각 '파일 경로', '파일 이름' 이다.
setDestinationInExternalFilesDir 방법
//官方文档说明
Set the local destination for the downloaded file to a path within the application's external files directory (as returned by getExternalFilesDir(String).
이 방법 은 파일 을 다운로드 하 는 경 로 를 만 드 는 것 입 니 다. 파일 경로 의 '특성' 은 getExternal FilesDir (String) 와 유사 합 니 다.
getExternalFilesDir(String)
이 방법의 반환 값 은 폴 더 입 니 다. 이 폴 더 는 SD 카드 에 생 성 된 Android/data/data/your 입 니 다.package/.
그 는 일반적으로 당신 의 app 실행 에 필요 한 파일 을 저장 하 는 데 사 용 됩 니 다 (예 를 들 어 인터넷 의 일부 그림 의 캐 시).
기본적으로 이 폴 더 는 현재 app 만 접근 할 수 있 습 니 다.
프로그램 이 마 운 트 해제 되면 이 폴 더 의 데이터 가 사라 집 니 다.
setDestinationInExternal PublicDir 방법
//官方说明
Set the local destination for the downloaded file to a path within the public external storage directory (as returned by getExternalStoragePublicDirectory(String)).
이 방법 도 하나의 경 로 를 만 드 는 데 사 용 됩 니 다. 이 경로 의 특성 은 getExternalStorage PublicDirectory (String) 와 유사 합 니 다.
getExternalStoragePublicDirectory(String))
이 방법의 반환 값 은 폴 더 입 니 다. 이 폴 더 는 SD 카드 루트 디 렉 터 리 에 만 들 어 졌 습 니 다 (mnt/sdcard/)
이 폴 더 의 내용 은 다른 프로그램 에서 접근 할 수 있 습 니 다. (접근 제어 가 없습니다)
프로그램 을 마 운 트 해제 할 때 이 폴 더 의 내용 을 잃 어 버 리 지 않 습 니 다.
다운로드 할 네트워크 형식 지정
지정 형식
//指定在WIFI状态下,执行下载操作。
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
//指定在MOBILE状态下,执行下载操作
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE);
로 밍 상태 에서 다운로드 작업 을 실행 할 수 있 습 니까?
request.setAllowedOverRoaming(boolean);
방법 으로 로 밍 상태 에서 작업 을 수행 하 는 것 에 동의 하 는 지 설정 합 니 다.(true, 허용, false 는 허용 하지 않 습 니 다. 기본 값 은 허용 합 니 다.)"계량 식 네트워크 연결"다운로드 작업 을 허용 할 지 여부
request.setAllowedOverMetered(boolean);
기본적으로 허용 된다.//당신 의 인터넷 트 래 픽 소모 에 따라 유 료 네트워크
Internet service providers can charge by the amount of data used (the amount of data sent and received by your PC). That's called a metered Internet connection. These plans often have a data limit, and if you exceed the limit you might have to pay extra. In some cases, you aren't charged extra but your connection speed becomes slower until the billing cycle ends.
If you have a metered Internet connection, setting your network connection to metered in Windows can help you reduce the amount of data you send and receive.
알림 스타일 맞 춤 설정
Notification 의 제목 과 설명 설정
request.setTitle("标题");
request.setDescription("描述");
Notification 의 표시 와 숨 김 을 설정 합 니 다.
request.setNotificationVisibility(visibility);
VISIBILTY_HIDDEN: Notification 은 표시 되 지 않 습 니 다. 이 속성 을 설정 하면 권한 을 추가 해 야 합 니 다
android.permission.DOWNLOAD_WITHOUT_NOTIFICATION.
VISIBILITY_VISIBLE: Notification 은 표시 되 지만 다운로드 작업 을 수행 하 는 과정 에서 만 표시 되 며 다운로드 완료 가 자동 으로 사라 집 니 다.(기본 값)VISIBILITY_VISIBLE_NOTIFY_COMPLETED: Notification 표시, 다운로드 진행 시, 완료 후 모두 표 시 됩 니 다.
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION: 작업 이 완료 되 었 을 때 만 알림 이 표 시 됩 니 다.
DownloadManger 의 라디오 이벤트
이러한 종류의 방송 은 특정한 시간 에 자동 으로 발송 되 며, 우 리 는 자신의 Receiver 를 맞 춰 방송 을 받 으 면 됩 니 다. 방송 등록 후 Activity 가 소 각 될 때 로그아웃 하여 메모리 유출 을 피 하 는 것 을 기억 하 세 요.
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
receiver = new DownloadCompleteReceiver();
registerReceiver(receiver,filter);
class DownloadCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
long downloaded_id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID,-1);
/* Log.d(getPackageName(),"下载完成:"+"downloaded_id ="+downloaded_id+"----" +"download_id="+download_id1+"");
Log.d(getPackageName(),"下载完成:"+"downloaded_id ="+downloaded_id+"----" +"download_id="+download_id2+"");*/
if(download_id1 == downloaded_id){
Log.d(getPackageName(),"下载完成:"+"downloaded_id ="+downloaded_id);
}
if(download_id2 == downloaded_id){
Log.d(getPackageName(),"下载完成:"+"downloaded_id ="+downloaded_id);
}
}
}
다운로드 완료 시 보 내 는 라디오.
대응 하 는 Action 은: ACTIONDOWNLOAD_COMPLETE
Notification 이 클릭 되 었 을 때 보 내 는 라디오 입 니 다.
대응 하 는 Action 은: ACTIONNOTIFICATION_CLICKED
모든 다운로드 상황 을 보 는 방송.
대응 하 는 Action 은: ACTIONVIEW_DOWNLOADS
미완이다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.