android download学习记录

东西拼凑,终于弄出来可以用的代码

[1].[代码] [Java]代码 跳至 [1]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

publicclass

DownManagerTask {

   

   
privatestatic

final

String TAG =
"DownManagerTask";

   

   
privatestatic

DownManagerTask DOWN_TASK =
newDownManagerTask();

   

   
privateContext
context;

   
privateDownloadManager
downloadManager;

   
longdownloadId
= -
1;

   
privateBitmap
bitmap;

   
privateImageView
imageView;

   

   

   

   
privateDownManagerTask(){}

   

   
publicstatic

DownManagerTask getInstance(){

       
returnDOWN_TASK;

   
}

   

   
@SuppressLint("InlinedApi")

   
publicvoid

init(Context context,ImageView imageView){

       
this.context
= context;

       
this.imageView
= imageView;

       
downloadManager
= (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);

   
}

   

   
/**

    
*
将下载的图片转化成bitMap

    
*

    
*/

   
@SuppressLint("NewApi")

   
privatevoid

parseBitMap(){

       
try{

           
ParcelFileDescriptor
pfd = downloadManager.openDownloadedFile(downloadId);

           
FileDescriptor
fileDescriptor = pfd.getFileDescriptor(); 

           
bitmap
= BitmapFactory.decodeFileDescriptor(fileDescriptor); 

           
pfd.close();

       
}catch(Exception
e){ 

           
e.printStackTrace();

       
}

   
}

   

   
/**

    
*
下载方法

    
*
@param url

    
*/

   
@SuppressLint("NewApi")

   
publicvoid

download(String url){

       
Log.d(TAG,
url);

       
Uri
uri = Uri.parse(url);

       
DownloadManager.Request
request =
newDownloadManager.Request(uri);

       
request.setAllowedNetworkTypes(Request.NETWORK_MOBILE

               
|
Request.NETWORK_WIFI);

       
request.setAllowedOverRoaming(false);

       
MimeTypeMap
mimeTypeMap = MimeTypeMap.getSingleton();

       
String
mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap

               
.getFileExtensionFromUrl(url));

       
request.setMimeType(mimeString);

       
//request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,
"Bugdroid.png"); 

       
request.allowScanningByMediaScanner();

       
request.setVisibleInDownloadsUi(true);

       
downloadId
= downloadManager.enqueue(request);

       
Log.d(TAG,"downloadId:"+downloadId);

       
context.registerReceiver(receiver,newIntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

   
}

   

   
publicvoid

unregisterReceiver(){

       
context.unregisterReceiver(receiver);

   
}

   

   
@SuppressLint("NewApi")

   
publicvoid

temp(){

       
Cursor
c = downloadManager.query(
newDownloadManager.Query().setFilterById(downloadId));

       
if(c
!=
null){

           
c.moveToFirst();

           
Log.d(TAG,(c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME))));

           
c.close();

       
}

   
}

   

   
privateBroadcastReceiver
receiver =
newBroadcastReceiver()
{

       

       
@SuppressLint("NewApi")

       
@Override

       
publicvoid

onReceive(Context context, Intent intent) {

           
//这里可以取得下载的id,这样就可以知道哪个文件下载完成了。适用与多个下载任务的监听

           
if(intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)){

               
Log.v(TAG,""+intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID,0));

                
Log.v(TAG,"download
complete"
);

                
parseBitMap();

                
imageView.setImageBitmap(bitmap);

                
Toast.makeText(context,"download
complete"
,
Toast.LENGTH_SHORT).show();

           
}

       
}

   
};

   

时间: 2024-08-09 06:23:59

android download学习记录的相关文章

Android socket 学习记录 之 执行new socket(ip, port)程序崩溃

这段时间在学习Android的socket编程,我不是专做APP的,做的是bootloader.驱动.hal.framework这个线的,也就是系统搭建和功能优化设计.为了打通这整条线,为此学习了不少东西,今天把Android的socket学习记录一下,以防止以后会出现这样的低级错误. 我这里是在极客学院的源码基础上做的自己的一些添加和修改,学习开始不就是先会修改么,举一反三,自然就很快学会了.由于看过视频和资料后就迫不及待的按照自己的想法想做一个功能,但是遇到麻烦了,就是执行new socke

【Android】学习记录<1> -- 初识ffmpeg

工作需要用到ffmpeg来进行Android的软编码,对这玩意儿一点都不了解,做个学习记录先. FFmpeg:http://www.ffmpeg.org Fmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.

Android NDK学习记录(一)

一.NDK环境在Mac中部署 1.准备eclipse,android sdk安装包,android ndk安装包(http://dl.google.com/android/ndk/android-ndk64-r10-darwin-x86_64.tar.bz2) 2.部署android开发环境 3.部署NDK开发环境(配置环境变量) 二.编写基于NDK的HelloWorld 1.它的作用即是把实现了我们在Java code中声明的native方法的那个libraryload进来,或者load其他什

android零碎学习记录之 TextSwithcer

TextSwitcher 翻译"文本转换开关",顾名思义:该转换开关是转换TextView的.开关,意思很明确,必定只有2个文本,一个展示(即"开"),一个隐藏(即"关"). 2. 简单示例: java代码: View rootView = inflater.inflate(R.layout.fragment_main, container, false); final TextSwitcher switcher = (TextSwitcher)

android ADB学习记录

自从接触了android,就开始使用ADB. Android Debug Bridge,Android调试桥接器,简称adb,是用于管理模拟器或真机状态的万能工具,采用了客户端-服务器模型,包括三个部分: 1.客户端部分,运行在开发用的电脑上,可以在命令行中运行adb命令来调用该客户端,像ADB插件和DDMS这样的Android工具也可以调用adb客户端. 2.服务端部分,是运行在开发用电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信. 3.守护进程部分,运行于模拟器或手机的后

Android开发学习记录--ListView使用

1.ListView的简单使用 首先建立一个新的项目,在xml文件中添加ListView控件,如下所示: <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"></ListView>接下来修改MainActivity中的代码: public class Ma

Android Studio学习记录-第三周

3.7.1 制作Nine-Patch图片 1.什么是.9.png格式 .9.png格式的图片可以在安卓平台指定拉伸区域,防止图片失真,一般用作背景图. 2.前提 去sdk的tools目录下面找draw9patch.bat文件,但是没找到. 3.处理方式 在android studio中生成 把要编辑的图片复制到资源文件中: 选中图片右键: 选择 create 9-path 就会在同目录下面生成相同文件名并且后缀是.9.png图片,这样就可以愉快的制作了. 4.注意 删除已经有替代品的并且不需要的

Android Studio学习记录-第四周

5.2.1动态注册监听网络变化 在onReceive方法中调用getActiveNetworkInfo()时,必须要在app/src/main/AndroidManifest.xml里添加权限: 5.2.2 开机广播目前还没有实现. 5.3.1发送标准广播 点击按钮之后没有显示toast, 原因:由于<第一行代码>第二版是基于android7.0进行开发的,而android O(8.0)对 于发送广播进行了限制,我们要指定包名: 此处代码需要调整: Intent intent = new In

Android Studio学习记录-第五周

6.2.1将数据存储到文件中 Android Device Monitor中的data文件夹打不开,但已实现从文件中读取数据的功能. 6.5.2配置LitePal 在app/build.gradle的dependencies闭包中需要添加内容如下: dependencies { implementation 'org.litepal.android:java:3.0.0' } 6.5.3创建和升级数据库 创建数据库一直没有成功,并且点击创建按钮程序会闪退. 发现在assets目录下创建litep