毕业论文-基于Android平台的文件管理器_第1页
毕业论文-基于Android平台的文件管理器_第2页
毕业论文-基于Android平台的文件管理器_第3页
毕业论文-基于Android平台的文件管理器_第4页
毕业论文-基于Android平台的文件管理器_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、池州学院本科毕业论文(设计) - 29 -前 言 Android是一种自由的且开放源代码的HYPERLINK /view/880.htm操作系统,它基于HYPERLINK /view/1634.htmLinux,其最显著的优势就是极佳的塑造性极高的开放性。开放的源码吸引大量的开发者和手机开发商,开放的平台带来更大的竞争,让更多的消费者能够以低价位买到心仪的手机。随着智能手机的日益普遍和Android应用,游戏的日益丰富,一个崭新的智能平台也正在走向成熟。本课题的目的就是开发出一款基于Android平台文件管理器,具备普通文件管理器所具备的基本功能,包括复制,剪切,粘贴,删除,以及蓝牙发送和接受

2、文件等。具有快速,稳定等特点。1 Android应用概述 1.1 研究内容 Android平台文件管理器的设计,主要是满足了人们日常生活中对手机文件的常用操作包括复制,粘贴,删除以及对文件共享的一些特殊情况的人性化设置。 1.2 研究意义Android是基于HYPERLINK /view/1634.htmLinux的开放源代码的HYPERLINK /view/880.htm操作系统。2012年11月数据调查显示,Android占有全世界智能HYPERLINK /view/148382.htm手机操作系统76%的市场份额,而中国市场占有率达90%1。随着Android智能手机价格的平民化,那些功

3、能不强,画面单调,键盘操作过时的塞班系统手机已经逐渐被淘汰了。在Android平台开发应用或游戏,前景广阔,市场需求量大。以前落后的操作手机上所有能玩的,在Android平台都能做到,而且做得更好,界面效果更炫,用户体验更佳2。随着手机成为人们日常生活和工作不可或缺的重要通讯工具,其功能越来越强大。但随着智能手机的广泛应用以及技术的日渐成熟,渐渐也引起人们对于手机文件安全以及文件管理的越来越多的关注和担心。 Android作为开源智能手机操作系统,在手机业界造成了巨大影响,其安全性也随着普及度日益突出。特别是2011以来,随着Android应用的飞速增长,各种针对Android 系统的恶意软件

4、以及攻击暴增。因此,Android平台的文件管理的问题,无疑是一个非常有价值的研究课题。 1.3 研究现状和发展趋势最早期的Android由Google公司提出,后来由开放手机联盟深入开发。它是一款基于Linux核心(C语言)的软件平台和操作系统,由核心操作系统,中间件,用户界面和应用软件层组成。它具有开放式的体系结构,拥有非常良好的开发和调试环境,支持各种可扩展的用户体验,存在非常丰富的图形系统,因而有支持多媒体的功能和强大的浏览器。号称是由首个移动终端打造的真正开放和完整的移动软件。Android底层以Linux核心工作为基础,只提供最基本功能,如驱动程序。其它的应用以java语言作为编程

5、规范编写。截至5月31日,Android智能手机市场份额为38.1%。iphone市场份额为27.3%,黑莓市场份额从24.7%下滑至19.7%,Windows Phone市场份额也有了小幅下降,从5.8%下滑至5.7%。由于Android平台的开源政策,他越来越受到人们的喜爱。Google+Linux的模式正逐渐成熟。可以预见,智能手机阵营中Android的市场占有率会越来越大,研究基于Android的文件的管理也会得到广泛的应用。目前国内android开发还是主要以应用开发为主:为企业开发应用、开发通用应用以及游戏开发。把开发出来的软件放到Android market或者其他App Mar

6、ket销售;还有就是一些创业型公司为国外公司进行外包开发。其中应用开发远大于游戏的开发。2 系统分析 2.1 研究目标本软件是基于Eclipse的开发环境,通过安装ADT插件与AndroidSDK,由于目前市场的Android系统主要是2.2以及2.2以上的系统,因此本应用的开发环境设定为2.2,开发出了针对Android文件件管理器。需要达到的目标主要有:(1) 了解Android应用程序的设计和开发过程。(2) 应用多种规则实现对Android手机中文件的管理。 (3) 稳定的IO流对文件进行操作7。 (4) 蓝牙文件传输。 2.2 需求分析本程序功能上主要包括两个模块: (1)对文件的普

7、通操作主要包括复制,粘贴,剪切,删除,重命名的功能; (2)通过系统自带的蓝牙功能在有蓝牙功能的手机之间发送文件。 2.3 性能分析 本程序性能的体现主要表现在对一些普通文件的操作,系统文件可见但由于考虑到系统的安全性问题以及手机系统的稳定,将设定为不可操作。在软件的整体性能上要求软件必须有一定的,健壮性和稳定性,对不同版本的Android系统有一定的兼容性。 3 Android应用概述 3.1 创建Android应用 打开eclipse,一次点击File-New-Android Application Project,将看到如下图所示的界面,下面依次讲解各个选项的意义和用途。 (1) Pro

8、ject Name: 应用的工程名称,在eclipse中开发时的总项目的跟文件夹的名称,是应用程序的标识; (2) Package Name: 在src目录下 的你的包名称,一般命名为与自己信息相关的名称,比如com.xyz.demo; (3) Mininum Required SDK: 你的程序要运行的最低android的系统版本,比如你设为2.3版本的话,那你的程序在2.3以下的手机系统上是无法运行的; (4) Target SDK: 如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值,他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序

9、开启兼容性检查判断的工作了。也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。但是,这个设置仅仅是一个声明、一个通知,不会有太实质的作用,比如说,使用了targetSdkVersion这个SDK版本中的一个特性,但是这个特性在低版本中是不支持的,那么在低版本的API设备上运行程序时,可能会报错:java.lang.VerifyError。也就是说,此属性不会帮你解决兼容性的测试问题。你至少需要在minSdkVersion这个版本上将程序完整的跑一遍来确定兼容性是没有问题的。为避免以上问题以及提高效率,在本项目中,我们统一使用2.2版本。 (5)

10、Compile With: 就是你的程序要用android的那个版本的编译器进行编译,如果设置的高了,有些过时的方法会提示不建议使用的标示,设置的低了,对于一些高版本的新方法的使用在低版本的android手机上时无法使用的。2.2版本是目前最流行的开发SDK版本,因此本引用在2.2以下的版本中将无法使用或出现兼容性问题。 (6) Theme:顾名思义,主题的意思,就是设置你的程序的主题是黑色还是白色主题,android中常用这两个默认的吧。该值将最终出现在AndroidManifest.xml中,并成为应用的主题,在创建过程中,此处只有四个选项,但到AndroidManifest.xml里修改

11、时应用可以有十多个值,甚至支持自定义的主题。图3-1 新建项目3.2 项目目录介绍可以看到在名为Application(项目名)的文件夹下面有src、gen、Android 4.4 libs等文件夹,每一个文件夹都对应有不同的作用3。(1)src下面放置的是开发人员自己编写的代码,具体内容如下com.example是当前项目的包名(package name),里面包含了一个MainActivity.java文件,这个文件是当前整个Android项目运行时的入口,有如C语言的Main方法。(2) gen文件夹,里面的文件是程序自动生成的代码,不用手动修改。里面有两个文件:BuildConfig.

12、java是调试(Debug)时用的,一般不管。R.java 这个文件时eclipse软件是自动产生的。会由 ADT 插件自动根据你放入 res 目录的 XML 描述文件、图像等资源,同步更新修改 R.java这个文件中,R.java是定义该项目所拥有的所有资源的索引文件。以 R.java 为名的这个档案,你完全不需要,也应避免和禁止手工修改 R.java 这个档案。自动产生的R 文件就像是个整个应用的字典一样,包含了使用者界面、图像、字符串等各式的资源与相应的编号 (十六进制的id) 。 Android 应用程序中很多时候会需要透过 R 类别调用资源。 系统在编译时编译器也会查看这个资源列表中

13、的信息,没有使用到的资源就不会系统编译,避免应用程序内存空间的浪费。另外,当应用的资源丢失,或SDK的版本错误时,R.java文件也会丢失,给开发带来很多麻烦。以上的src以及gen可以归类为源码区,除了放置程序自动生成的源码,自己写的代码也几乎是放在src中。(3) 还有Android 4.4及Android Private Library,两个都是类库,前者是Android类库,后者是新的SDK版本才有的,包含了libs下引入的第三方包。(4) Asset里面放置的是资源文件(5) Libs放置的是第三方jar包,但最新版本的ADK下会将这些第三方包转移到Android Private L

14、ibrary里面。(6) res也是资源文件的放置位置,和Asset最明显的不同点是res里的资源文件会通过R.java来生成ID,而Asset里的资源文件则不会,具体区别自己可谷歌一下。在res下面还有几个比较重要和常见的文件夹:drawable-hdpi/drawable-ldpi/drawable-mdpi:分别放置高、低、中等分辨率的图片,程序会自动根据运行设备的分辨率更换匹配大小的图片。layout:放置布局文件(XML描述文件),布局文件是调整制定Activity的窗口布局文件。values:放置styles.xml以及strings.xml文件。(7) AndroidManife

15、st.xml 是 Android 应用程序的功能清单9,应用程序在这里列出该工程所提供的完整的功能。当应用程序开启时,会提供诸如内容提供者 (ContentProvider) 、处理的资料类型、 实际运行的类别、跨应用程序的资讯等等讯息。 你可以在此指定你的应用程序会使用到的服务 ( 诸如电话功能、网路功能、 GPS 功能等 ) 。当你新增一个页面行为类别 (Activity) 时 ,你也需要先在此注册这个新增的 Activity 类别后,才能顺利调用1图3-2 Android项目文件目录4 文件管理器总体设计 4.1 文件管理器功能需求分析 项目的设计流程通常是基于项目的功能来安排的。以下是

16、文件管理器的功能需求分析: (1)扫描SD卡的目录,获得文件的完整路径和名称,并根据文件的后缀名判断文件类型,然后根据文件类型,分配图标,使用ListView显示文件列表。 (2)为ListView注册单击事件,单击事件的响应过程:根据文件ListView的位置获得对应的文件,根据文件的后缀名分配对应的Intent(意图),并讲Intent发出,当手机中有注册了对应的Intent的应用时,会弹出窗口,让用户自己选择打开文件的应用程序。(以上除了发出Intent之外,都由系统自行完成。) (3)为ListView注册长按事件,长按后弹出上下文菜单(ContextMenu),并完成剪切,复制,删除

17、,重命名,属性,粘贴,蓝牙发送的功能。 (4)Android任何功能实现的基础都是良好的界面,界面的好坏直接影响到用户的好感度8,所以对于Android应用的开发,尤其要注意界面的开发。如今大多数应用的版本升级,做的基本上都是设计更好的界面赢得更多用户的青睐6。 4.2 文件管理器的功能实现 4.2.1 获得SD卡内的文件 Java是面向对象的编程语言4,因此程序中将SD卡内的文件(“文件”不仅是指硬盘上的数据,它还包括任何设备资源。在Unix_like系统中,所有的硬件设备都被看做是文件,“文件”是内核范畴的概念,磁盘,U盘,内存,网络,甚至CPU都被内核抽象为“文件”。5)抽象为File类

18、的对象。FilecurFileList= getFiles(Environment.getExternalStorageDirectory();MyListViewAdapter adapter = new MyListViewAdapter(this, curFileList); listview.setAdapter(adapter);如上述代码所述,使用File类数组存储内存卡内的文件,并将数组和当前Activity的Context和文件数组作为参数传递到Lisiview的Adapter(适配器)中。Overridepublic View getView(int position, Vi

19、ew convertView, ViewGroup arg2) Bitmap logo = null;View itemView = View.inflate(context, R.layout.listviewitem, null);ImageView imageView =(ImageView) itemView.findViewById(R.id.imageView); 上述代码是初始化ListView的列表Item上的图标,使得后面在判断文件的类后可以在对应的图标位置显示相应的图标。if(filesposition.isDirectory()logo = BitmapFactory.d

20、ecodeResource(context.getResources(), R.drawable.folder); 上述代码是判断文件的类型,当文件的类型为文件夹时,显示相应的文件夹图标。else if(filesposition.isFile()String name=filesposition.getName().toLowerCase();if(name.endsWith(.txt)logo= BitmapFactory.decodeResource(context.getResources(), R.drawable.text); 当文件的类型为普通文件时,根据文件的后缀名判断文件的M

21、IME类型显示相应的图标,当文件名为“.txt”结束时,显示对应的图标。else if(name.endsWith(.mp3)logo= BitmapFactory.decodeResource(context.getResources(), R.drawable.audio);else if(name.endsWith(.jpg)|name.endsWith(.png)|name.endsWith(.jpeg)|name.endsWith(.bmp)logo= BitmapFactory.decodeResource(context.getResources(), R.drawable.pi

22、ctures);else if(name.endsWith(.mav)logo= BitmapFactory.decodeResource(context.getResources(), R.drawable.wav);else if(name.endsWith(.pdf)logo= BitmapFactory.decodeResource(context.getResources(), R.drawable.pdf);elselogo= BitmapFactory.decodeResource(context.getResources(), R.drawable.none); 当文件的后缀名

23、无法取得对应的图标,或者文件没有后缀名时,文件的图标为带问号的图标。imageView.setImageBitmap(logo);TextView tv = (TextView) itemView.findViewById(R.id.filename);if(position = 0)tv.setText(MainActivity.path); 当文件列表的位置为0时,显示是对应的文件夹路径。elsetv.setText(filesposition.getName(); 当文件列表的位置不为0时,显示是对应的列表项的文件或文件夹名称。return itemView;以上代码为Adapter的核

24、心代码,即根据File数组的内容显示出对应的界面,根据File数组的类型,判断文件时文件夹还是文件(Linnux中文件是一个抽象的概念,包括内存卡在内,文件夹也属于文件的范畴,java的File类可以判断文件是文件夹还是文件),并根据类型加载不同的图标。 如果是文件的话,会继续根据文件的后缀吗名判断文件的类型,在如上的代码中,MP3文件,TXT文件,PDF文件以及PNG文件等几种常见的文件都加载了各自的图标,当文件类型不可辨识或没有后缀名时加载统一的未知文件类型的图标。(在实际开发过程中,为防止用户的误操作而对文件进行保护,将文件属性设置成不可读,或因为安全问题不想让用户解析,或不想让用户打开

25、某文件,经常采用故意修改文件后缀名或直接去掉后缀的方法)。 正确编译和运行以上代码,会显示如下图的界面,此图显示了手机SD卡内的所有文件。图4-1 获取文件列表 4.2.2 为ListView注册单击事件并处理listview.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterView arg0, View arg1,int position, long arg3) if(curFileListposition.isDirectory()path=curFileList

26、position.getAbsolutePath(); 点击列表的选项时,获取对应文件的绝对路径。if (!curFileListposition.canRead() Toast.makeText(MainActivity.this, 拒绝访问, 2000).show();return; 当文件受到系统的保护时,弹出友好提示,提示用户改文件或文件夹为系统不可读。if (curFileListposition.isFile() openFile(curFileListposition.getAbsoluteFile(); 当对应的文件为系统可读文件且为普通文件时,调用程序中对应的的打开文件的程序

27、。elsecurFileList = getFiles(curFileListposition);/Log.e(curFileListposition, curFileListposition.getAbsolutePath(); 当对应的不是普通文件而是文件夹时,会调用程序中相应的打开文件夹的方法,获取文件夹下的所有文件列表,并如同上述打开SD卡列表的方法打开文件夹的文件列表。MyListViewAdapter adapter = new MyListViewAdapter(getApplicationContext(), curFileList);listview.setAdapter(a

28、dapter);); 如上代码是为ListView注册并处理单击事件单击事件,当文件夹可读时,判断类型,如果单击的是文件夹是,会重复打开内存卡的步骤,如下图所示是打开BlueTooth文件夹的界面。图 4-2 打开文件夹目录 当单击文件时,调用openFile()方法,以下为openFile()方法代码 ,当该方法被调用 ,程序会为选中的文件添加一个 intent属性type,将对应的文件抽象成file传入getMIMEType(aFile)方法中。private void openFile(File aFile) Intent intent=new Intent();intent.addFl

29、ags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setAction(android.content.Intent.ACTION_VIEW);String type=getMIMEType(aFile); 打开普通文件的核心方法,根据文件的后缀名获取对应文件的MIME类型,发出intent中带有相应的type字段。intent.setDataAndType(Uri.fromFile(aFile), type); startActivity(intent); 以下为getMIMEType(File aFile) 方法,在该方法中,程序获得了完整的文件名,并根据文

30、件名的后缀返回对应的类型,并将该类型添加到openFile()方法的intent对象中,当程序发出intent时,手机中注册了该intent的应用会被加入到选择打开程序的列表中10,正确编译和运行以下代码,将显示如下图所示的界面。private String getMIMEType(File aFile) String type=;String fName=aFile.getName();String end=fName.substring(fName.lastIndexOf(.)+1, fName.length().toLowerCase(); 根据文件的名称获取文件的后缀,以备后面的判断时

31、使用。if(end.equals(m4a)|end.equals(mp3)|end.equals(mid)|end.equals(wav)|end.equals(ogg)type=audio; 当后缀名为m4a,mp3,wav时,返回的type的指端为“audio”;else if(end.equals(3gp)|end.equals(mp4)type=video; 当后缀名为3pg或mp4时,返回的type的指端为“video”;else if(end.equals(jpg)|end.equals(gif)|end.equals(png)|end.equals(jpeg)|end.equal

32、s(bmp)type=image; 当后缀名为jpg,gif,png等对应的图片后缀时,返回的type的指端为“image”;else if(end.equals(apk)type=application/vnd.android.package-archive; 特别的,当后缀名为apk时,返回的type的指端为“application/vnd.android.package-archive”,返回时会调用系统方法安装应用;else if(end.equals(chm)|end.equals(txt)|end.equals(java)type=text; 当后缀名为chm,txt或java时,

33、返回的type的指端为“text”;else if(end.equals(pdf)type=pdf;elsetype=*;if(end.equals(apk)elsetype=type+/*;return type;图 4-3 选择打开文件程序4.2.3 为ListView注册长按事件并处理下面的方法为重写的上下文菜单的方法,当用户长按ListView的项目时,用户的长按事件会交由如下的方法处理。public void onCreateContextMenu(ContextMenu menu, View source,ContextMenu.ContextMenuInfo menuInfo)

34、menu.add(0, ID_MENU_CUT, 120, 剪切);menu.add(0, ID_MENU_COPY, 130, 复制);menu.add(0, ID_MENU_DELETE, 140, 删除);menu.add(0, ID_MENU_RENAME, 150, 重命名);menu.add(0, ID_MENU_PROPERTY, 160, 属性);menu.add(0, ID_MENU_PASTE, 170, 粘贴); 在该方法中,注册过上下文菜单的View对象,弹出上下文菜单,上述的代码为给上下文菜单添加菜单子项,此处添加了复制,粘贴,删除,重命名等菜单子项,后文会详细介绍各

35、子菜单的具体用途。String fromFile = null;String toFile = null;String fFile = null;File cutFile = null;public boolean onContextItemSelected(MenuItem item) AdapterView.AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();final int index = (int) menuInfo.id; 上面添加子菜单的流程之后,在此处为子项分配ID和视图,以

36、便在点击时处理相应的点击事件。switch (item.getItemId() case ID_MENU_CUT:fFile = curFileListindex.getAbsoluteFile().toString();cutFile = curFileListindex.getAbsoluteFile();break; 此处处理的为菜单的剪切事件,并记录下对应的文件的绝对路径并将对应的文件抽象成剪切的对象。case ID_MENU_COPY:fromFile = curFileListindex.getAbsolutePath().toString(); if(curFileListind

37、ex.getAbsoluteFile().isFile() isFile=true; else if(curFileListindex.getAbsoluteFile().isDirectory() copyFile(fromFile,toFile);break; 此处的代码用于处理复制事件,记录下对应文件的绝对路径,并将对应的文件抽象成File对象,并立即判断对应的文件时普通文件还是文件夹,并分别调用复制文件或文件夹的方法。复制文件和文件夹的处理方式有很大的区别,后文中会具体详述。case ID_MENU_PASTE:toFile = curFileListindex.getAbsolute

38、Path().toString();if (fromFile != null) Log.e(paste, fromFile); if(isFile=true) copyFile(fromFile,toFile); isFile=false; 此处处理上下文菜单中对应的粘贴事件,并获取对应的文件绝对路径,获取对应的文件抽象成File对象。 elsetry copyFloder(fromFile, toFile); 当源文件标记为复制文件时,分为复制文件和复制文件夹两种情况,上文中标记的文件实例在此处使用。 catch (IOException e) e.printStackTrace();fin

39、ally if(fFile!=null) if(cutFile.isFile() copyFile(fFile, toFile); delete(cutFile); 此处代码先判读标记的剪切文件是否为空,当标记不为空,调用程序中的代码处理剪切事件,其实是调用了上文的复制事件,然后调用系统的删除方法删除对应的文件。 if(cutFile.isDirectory() try copyFloder(fFile, toFile); catch (IOException e) e.printStackTrace();finallydelete(cutFile); 此处代码被标记剪切的文件为文件夹的处理事

40、件,调用程序中的复制文件夹的方法,再调用删除文件的方法,删除文件方法内部会判断选择的文件是文件或文件夹,并分别处理。MyListViewAdapter adapter1 = new MyListViewAdapter(getApplicationContext(),getFiles(curFileListindex.getParentFile();adapter1.notifyDataSetChanged();listview.setAdapter(adapter1);break; 重新获取当前显示目录下的全部文件,并调用上文中显示文件列表的方法,刷新列表,重新加载。case ID_MENU_

41、PROPERTY:AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setIcon(R.drawable.ic_launcher);builder.setTitle(文件属性:);String path = curFileListindex.getAbsolutePath().toString();String name = curFileListindex.getName().toString(); 此处代码处理的是查看文件属性的事件,程序中会弹出对话框,并获取文件的绝对路径,文件名,并设置对话框的标题。l

42、ong size = 0;if(curFileListindex.getAbsoluteFile().isFile()size = curFileListindex.length(); 此处代码用于获取File对象的长度,及字节长度,变量的类型为long类型。 if(curFileListindex.getAbsoluteFile().isDirectory() try size=getsize(curFileListindex.getAbsoluteFile(); 此处代码用于获取File对象的长度,变量的类型为long类型,并将File对象判断普通文件或文件夹,分情况计算长度。 catch

43、 (IOException e) e.printStackTrace(); builder.setMessage(文件路径: + path + n文件名: + name + n文件大小+ size); 显示对话框的主要信息,包含了对应的文件对象的文件绝对路径,文件名,以及处理过长度的文件大小。builder.setPositiveButton(确定, new OnClickListener() Overridepublic void onClick(DialogInterface arg0, int arg1) );builder.create();builder.show();break;

44、设置对话框的确定按钮,初始化按钮并显示出来,点击到该确定按钮只会将对话框去除,这是一种用户友好的界面的设计。case ID_MENU_DELETE:Builder builder2 = new Builder(MainActivity.this);builder2.setTitle(警告!);builder2.setIcon(R.drawable.ic_launcher);builder2.setMessage(确定要删除 + curFileListindex.getName(); 此处的代码处理用户的删除的事件,弹出对话框,警告用户,标题为警告,并设置图标,获取对应文件的文件名,这也是一种用

45、户友好体验的设计。builder2.setPositiveButton(确定, new OnClickListener() Overridepublic void onClick(DialogInterface arg0, int arg1) delete(curFileListindex.getAbsoluteFile(); 重写对话框中的的按钮点击方法,并处理删除对应文件的方法,程序中的删除方法,改方法的内部会判断对应的文件对象是普通文件还是文件夹,并调用不同的流程删除文件。MyListViewAdapter adapter = new MyListViewAdapter(getAppli

46、cationContext(),getFiles(curFileListindex.getParentFile();adapter.notifyDataSetChanged();listview.setAdapter(adapter); 删除文件或文件夹后,重新获取对应目录下的所有文件,并重新刷新列表,重新加载界面中的ListView12。);builder2.setNegativeButton(取消, new OnClickListener() Overridepublic void onClick(DialogInterface arg0, int arg1) );builder2.cre

47、ate();builder2.show();break; 设置对话框的取消按钮,点击取消按钮,对话框会被取消,但取消和确定事件的调用都是回调的方法,此处会初始化界面,并显示到界面。case ID_MENU_RENAME:final EditText input = new EditText(getApplicationContext();/ AlertDialog dialog;Builder builder1 = new Builder(MainActivity.this);builder1.setTitle(重命名);builder1.setIcon(R.drawable.ic_launc

48、her);builder1.setView(input); 此处的代码处理用户的重命名事件,弹出对话框让用户输入新的用户名,并在用户点击类似确定的按钮,完成完整的重命名事件。builder1.setPositiveButton(修改, new OnClickListener() Overridepublic void onClick(DialogInterface arg0, int arg1) String rename = input.getText().toString();if (curFileListindex.renameTo(new File(curFileListindex.g

49、etParent() + /, rename) Log.e(rename, success); 获取对话框的按钮确定按钮,将对应的文件对象获取,并调用File类的对应方法重名该文件。/ Log.e(rename, rename+);MyListViewAdapter adapter = new MyListViewAdapter(getApplicationContext(),getFiles(curFileListindex.getParentFile();adapter.notifyDataSetChanged();listview.setAdapter(adapter);); 在重命名后,系统下的文件列表的名称,并重新获取当前目录下的全部文件,给构造器新的文件列表,刷新列表。builder1.setNegativeButton(取消, new OnClickListener() Overridepublic void onClick(DialogInterface arg0, int arg1) );builder1.create();builder1.show();break; 同样的,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论