- 浏览: 12953596 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
sanrenxing_1:
GoEasy 实时推送支持IE6-IE11及大多数主流浏览器的 ...
WindowsPhone消息推送服务 -
张砚辉:
两侧照片绕Y轴旋转后有锯齿,请问锯齿解决方案,很长时间没解决
自定义带倒影和偏转的超炫Gallery -
knight_black_bob:
能不能把你自己的博客整理下分类下,写了这么多 ,都不知道怎么查 ...
Android_View,ViewGroup,Window之间的关系 -
jeasonyoung:
你这个代码实现在iOS8下应该是滑不动的
UISlider 滑块控件—IOS开发 -
wx_hello:
如果能写个可运行的java程序,不胜感激。。。
rs232串口通信原理
android 对文件进行添加、删除、更改文件名 .
/*
* 文件资源管理器再进化
* 对文件进行添加、更改文件名、删除
* 程序中以自定义的MyAdapter来设置显示数据传入存储文件名与
* 文件路径的两个List对象,使用setListAdapter()将数据设置给
* ListView。当用户单机item时,时会触犯onListItemClick(),
* 此时程序会判断item是文件夹还是文件,是文件夹的话,就展开下
* 一层目录,是文件的话就运行自定义的fileHandle()。fileHandle()
* 这个方法被调用时,会先弹出含有打开文件、更改文件名、删除文件
* 三个选项的AlertDialog。当单机任何一个item时,AlertDialog的
* onClick()事件就会被触发,会依照所选择的item功能来运行不同的
* 动作。
* 当有文件被更改或被删除时,要再次运行getFileDir(),使ListView
* 里面的文件信息是最新的。
*/
import略;
- publicclassEx05_15ActivityextendsListActivity{
- privateList<String>item=null;//存放显示的名称
- privateList<String>paths=null;//存放文件的路径
- privateStringrootPath="/";//起始目录
- privateTextViewmPaht;
- privateViewmyView;
- privateEditTextmyEditText;
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mPaht=(TextView)findViewById(R.id.mPath);
- getFileDir(rootPath);
- }
- //取得文件架构的方法
- privatevoidgetFileDir(StringfilePath){
- //设置目前所在路径
- mPaht.setText(filePath);
- item=newArrayList<String>();
- paths=newArrayList<String>();
- Filef=newFile(filePath);
- File[]files=f.listFiles();
- if(filePath.equals(rootPath)){
- //第一笔设置为回到根目录
- item.add("b1");
- paths.add(rootPath);
- //第二笔设置为回到上层
- item.add("b2");
- paths.add(f.getParent());
- }
- //将所有文件添加到ArraryList中
- for(inti=0;i<files.length;i++){
- Filefile=files[i];
- item.add(file.getName());
- paths.add(file.getPath());
- }
- //使用自定义的MyAdapter来将数据传入ListActivist
- setListAdapter(newMyAdapter(this,item,paths));
- }
- //设置ListItem被按下是要做的动作
- protectedvoidonListenerItemClick(ListViewl,Viewv,intposition,longid){
- Filefile=newFile(paths.get(position));
- if(file.canRead()){
- if(file.isDirectory()){
- //如果是文件夹就在执行getFileDir()
- getFileDir(paths.get(position));
- }else{
- //如果是文件则调用fileHandle()
- fileHandle(file);
- }
- }else{
- //否则跳出AlertDialog显示权限不足
- newAlertDialog.Builder(this)
- .setTitle("提示信息")
- .setMessage("此文件不能读取或你没有足够的权限")
- .setPositiveButton("OK",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- }
- }).show();
- }
- }
- //fileHandle()处理方法
- privatevoidfileHandle(finalFilefile){
- //TODOAuto-generatedmethodstub
- //按下文件时OnClickListener()
- android.content.DialogInterface.OnClickListenerlistener1=newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich){
- //TODOAuto-generatedmethodstub
- if(which==0){
- //选择的item为打开文件
- openFile(file);
- }elseif(which==1){
- //选择的item为更改文件的名字
- LayoutInflaterfactory=LayoutInflater
- .from(Ex05_15Activity.this);
- //初始化myChoiceView,使用rename_alert_dialog为layyout
- myView=factory
- .inflate(R.layout.rename_alert_dialog,null);
- myEditText=(EditText)myView.findViewById(R.id.mEdit);
- //将原始的文件名先放入到EditText中
- myEditText.setText(file.getName());
- //一个更改文件名的Dialog的确定按钮的Listener
- android.content.DialogInterface.OnClickListenerlistener2=newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich){
- //TODOAuto-generatedmethodstub
- //取得修改后的文件路径
- Stringmodname=myEditText.getText().toString();
- finalStringpFile=file.getParentFile().getPath()
- +"/";
- finalStringnewPath=pFile+modname;
- //判断文件是否存在
- if(newFile(newPath).exists()){
- //排除修改文件时没修改直接送出的情况
- if(!modname.equals(file.getName())){
- //跳出警告文件名重复,并确认时候修改
- newAlertDialog.Builder(
- Ex05_15Activity.this)
- .setTitle("警告!")
- .setMessage("文件已存在,是否要覆盖?")
- .setPositiveButton(
- "确定",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODO
- //Auto-generated
- //methodstub
- //单机确定,覆盖原来的文件
- file.renameTo(newFile(
- newPath));
- //重新生成文件列表
- getFileDir(pFile);
- }
- })
- .setNegativeButton(
- "取消",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODO
- //Auto-generated
- //methodstub
- }
- }).show();
- }
- }else{
- //文件名不存在直接做修改动作
- file.renameTo(newFile(newPath));
- getFileDir(pFile);
- }
- }
- };
- //更改文件名时跳出对话框
- AlertDialogrenameDialog=newAlertDialog.Builder(
- Ex05_15Activity.this).create();
- renameDialog.setView(myView);
- renameDialog.setButton("确定",listener2);
- renameDialog.setButton2("取消",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- }
- });
- renameDialog.show();
- }else{
- //选择的item为删除文件
- newAlertDialog.Builder(Ex05_15Activity.this)
- .setTitle("注意")
- .setMessage("确定删除文件?")
- .setPositiveButton("确定",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- file.delete();
- getFileDir(file.getParent());
- }
- })
- .setNegativeButton("取消",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- }
- }).show();
- }
- }
- };
- //选择一个文件时要跳出如何处理文件的ListDialog
- String[]menu={"打开文件","更改文件名","删除文件"};
- newAlertDialog.Builder(Ex05_15Activity.this).setTitle("你要做什么?")
- .setItems(menu,listener1)
- .setPositiveButton("取消",newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich){
- //TODOAuto-generatedmethodstub
- }
- }).show();
- }
- //在手机上打开文件的方法
- privatevoidopenFile(Filef){
- Intentintent=newIntent();
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setAction(android.content.Intent.ACTION_VIEW);
- //调用getMIMEType()来取得MimeType
- Stringtype=getMIMEType(f);
- //设置intent的file与MimeType
- intent.setDataAndType(Uri.fromFile(f),type);
- startActivity(intent);
- }
- privateStringgetMIMEType(Filef){
- //TODOAuto-generatedmethodstub
- Stringtype="";
- StringfName=f.getName();
- Stringend=fName
- .substring(fName.lastIndexOf("."+1),fName.length())
- .toLowerCase();
- if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")
- ||end.equals("xmf")||end.equals("wav")||end.equals("ogg")){
- type="audio";
- }elseif(end.equals("3gp")||end.equals("mp4")||end.equals("rmvb")){
- type="video";
- }elseif(end.equals("jpg")||end.equals("gif")||end.equals("png")
- ||end.equals("jpeg")||end.equals("bmp")){
- type="image";
- }else{
- //无法直接打开,就跳出供用户列表选择
- type="*";
- }
- type+="/*";
- returntype;
- }
- }
public class Ex05_15Activity extends ListActivity { private List<String> item = null;// 存放显示的名称 private List<String> paths = null;// 存放文件的路径 private String rootPath = "/";// 起始目录 private TextView mPaht; private View myView; private EditText myEditText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mPaht = (TextView) findViewById(R.id.mPath); getFileDir(rootPath); } // 取得文件架构的方法 private void getFileDir(String filePath) { // 设置目前所在路径 mPaht.setText(filePath); item = new ArrayList<String>(); paths = new ArrayList<String>(); File f = new File(filePath); File[] files = f.listFiles(); if (filePath.equals(rootPath)) { // 第一笔设置为回到根目录 item.add("b1"); paths.add(rootPath); // 第二笔设置为回到上层 item.add("b2"); paths.add(f.getParent()); } // 将所有文件添加到ArraryList中 for (int i = 0; i < files.length; i++) { File file = files[i]; item.add(file.getName()); paths.add(file.getPath()); } // 使用自定义的MyAdapter来将数据传入ListActivist setListAdapter(new MyAdapter(this, item, paths)); } // 设置ListItem被按下是要做的动作 protected void onListenerItemClick(ListView l, View v, int position, long id) { File file = new File(paths.get(position)); if (file.canRead()) { if (file.isDirectory()) { // 如果是文件夹就在执行getFileDir() getFileDir(paths.get(position)); } else { // 如果是文件则调用fileHandle() fileHandle(file); } } else { // 否则跳出AlertDialog显示权限不足 new AlertDialog.Builder(this) .setTitle("提示信息") .setMessage("此文件不能读取或你没有足够的权限") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } } // fileHandle()处理方法 private void fileHandle(final File file) { // TODO Auto-generated method stub // 按下文件时OnClickListener() android.content.DialogInterface.OnClickListener listener1 = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub if (which == 0) { // 选择的item为打开文件 openFile(file); } else if (which == 1) { // 选择的item为更改文件的名字 LayoutInflater factory = LayoutInflater .from(Ex05_15Activity.this); // 初始化myChoiceView,使用rename_alert_dialog为layyout myView = factory .inflate(R.layout.rename_alert_dialog, null); myEditText = (EditText) myView.findViewById(R.id.mEdit); // 将原始的文件名先放入到EditText中 myEditText.setText(file.getName()); // 一个更改文件名的Dialog的确定按钮的Listener android.content.DialogInterface.OnClickListener listener2 = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub // 取得修改后的文件路径 String modname = myEditText.getText().toString(); final String pFile = file.getParentFile().getPath() + "/"; final String newPath = pFile + modname; // 判断文件是否存在 if (new File(newPath).exists()) { // 排除修改文件时没修改直接送出的情况 if (!modname.equals(file.getName())) { // 跳出警告 文件名重复,并确认时候修改 new AlertDialog.Builder( Ex05_15Activity.this) .setTitle("警告!") .setMessage("文件已存在,是否要覆盖?") .setPositiveButton( "确定", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO // Auto-generated // method stub // 单机确定,覆盖原来的文件 file.renameTo(new File( newPath)); // 重新生成文件列表 getFileDir(pFile); } }) .setNegativeButton( "取消", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO // Auto-generated // method stub } }).show(); } } else { // 文件名不存在直接做修改动作 file.renameTo(new File(newPath)); getFileDir(pFile); } } }; // 更改文件名时跳出对话框 AlertDialog renameDialog = new AlertDialog.Builder( Ex05_15Activity.this).create(); renameDialog.setView(myView); renameDialog.setButton("确定", listener2); renameDialog.setButton2("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); renameDialog.show(); } else { // 选择的item为删除文件 new AlertDialog.Builder(Ex05_15Activity.this) .setTitle("注意") .setMessage("确定删除文件?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO Auto-generated method stub file.delete(); getFileDir(file.getParent()); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } } }; // 选择一个文件时要跳出如何处理文件的ListDialog String[] menu = { "打开文件", "更改文件名", "删除文件" }; new AlertDialog.Builder(Ex05_15Activity.this).setTitle("你要做什么?") .setItems(menu, listener1) .setPositiveButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } // 在手机上打开文件的方法 private void openFile(File f) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); // 调用getMIMEType()来取得MimeType String type = getMIMEType(f); // 设置intent的file与MimeType intent.setDataAndType(Uri.fromFile(f), type); startActivity(intent); } private String getMIMEType(File f) { // TODO Auto-generated method stub String type = ""; String fName = f.getName(); String end = fName .substring(fName.lastIndexOf("." + 1), fName.length()) .toLowerCase(); if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") || end.equals("xmf") || end.equals("wav") || end.equals("ogg")) { type = "audio"; } else if (end.equals("3gp") || end.equals("mp4") || end.equals("rmvb")) { type = "video"; } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") || end.equals("jpeg") || end.equals("bmp")) { type = "image"; } else { // 无法直接打开,就跳出供用户列表选择 type = "*"; } type += "/*"; return type; } }
MyAdapter.java代码如下:
- /*自定义的Adapter,继承android.widget.BaseAdapter*/
- publicclassMyAdapterextendsBaseAdapter{
- /*
- *变量声明mIcon1:并到根目录的图文件mIcon2:并到第几层的图片mIcon3:文件夹的图文件mIcon4:文件的图片
- */
- privateLayoutInflatermInflater;
- privateBitmapmIcon1;
- privateBitmapmIcon2;
- privateBitmapmIcon3;
- privateBitmapmIcon4;
- privateList<String>items;
- privateList<String>paths;
- /*MyAdapter的构造符,传入三个参数*/
- publicMyAdapter(Contextcontext,List<String>it,List<String>pa){
- /*参数初始化*/
- mInflater=LayoutInflater.from(context);
- items=it;
- paths=pa;
- mIcon1=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.back01);
- mIcon2=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.back02);
- mIcon3=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.folder);
- mIcon4=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.doc);
- }
- /*继承BaseAdapter,需重写method*/
- @Override
- publicintgetCount(){
- returnitems.size();
- }
- @Override
- publicObjectgetItem(intposition){
- returnitems.get(position);
- }
- @Override
- publiclonggetItemId(intposition){
- returnposition;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- ViewHolderholder;
- if(convertView==null){
- /*使用告定义的file_row作为Layout*/
- convertView=mInflater.inflate(R.layout.file_row,null);
- /*初始化holder的text与icon*/
- holder=newViewHolder();
- holder.text=(TextView)convertView.findViewById(R.id.text);
- holder.icon=(ImageView)convertView.findViewById(R.id.icon);
- convertView.setTag(holder);
- }else{
- holder=(ViewHolder)convertView.getTag();
- }
- Filef=newFile(paths.get(position).toString());
- /*设定[并到根目录]的文字与icon*/
- if(items.get(position).toString().equals("b1")){
- holder.text.setText("Backto/");
- holder.icon.setImageBitmap(mIcon1);
- }
- /*设定[并到第几层]的文字与icon*/
- elseif(items.get(position).toString().equals("b2")){
- holder.text.setText("Backto..");
- holder.icon.setImageBitmap(mIcon2);
- }
- /*设定[文件或文件夹]的文字与icon*/
- else{
- holder.text.setText(f.getName());
- if(f.isDirectory()){
- holder.icon.setImageBitmap(mIcon3);
- }else{
- holder.icon.setImageBitmap(mIcon4);
- }
- }
- returnconvertView;
- }
- /*classViewHolder*/
- privateclassViewHolder{
- TextViewtext;
- ImageViewicon;
- }
- }
/* 自定义的Adapter,继承android.widget.BaseAdapter */ public class MyAdapter extends BaseAdapter { /* * 变量声明 mIcon1:并到根目录的图文件 mIcon2:并到第几层的图片 mIcon3:文件夹的图文件 mIcon4:文件的图片 */ private LayoutInflater mInflater; private Bitmap mIcon1; private Bitmap mIcon2; private Bitmap mIcon3; private Bitmap mIcon4; private List<String> items; private List<String> paths; /* MyAdapter的构造符,传入三个参数 */ public MyAdapter(Context context, List<String> it, List<String> pa) { /* 参数初始化 */ mInflater = LayoutInflater.from(context); items = it; paths = pa; mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.back01); mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.back02); mIcon3 = BitmapFactory.decodeResource(context.getResources(), R.drawable.folder); mIcon4 = BitmapFactory.decodeResource(context.getResources(), R.drawable.doc); } /* 继承BaseAdapter,需重写method */ @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { /* 使用告定义的file_row作为Layout */ convertView = mInflater.inflate(R.layout.file_row, null); /* 初始化holder的text与icon */ holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } File f = new File(paths.get(position).toString()); /* 设定[并到根目录]的文字与icon */ if (items.get(position).toString().equals("b1")) { holder.text.setText("Back to /"); holder.icon.setImageBitmap(mIcon1); } /* 设定[并到第几层]的文字与icon */ else if (items.get(position).toString().equals("b2")) { holder.text.setText("Back to .."); holder.icon.setImageBitmap(mIcon2); } /* 设定[文件或文件夹]的文字与icon */ else { holder.text.setText(f.getName()); if (f.isDirectory()) { holder.icon.setImageBitmap(mIcon3); } else { holder.icon.setImageBitmap(mIcon4); } } return convertView; } /* class ViewHolder */ private class ViewHolder { TextView text; ImageView icon; } }
布局文件很简单,在这里我就不做详细介绍了。下面我我们来看看运行后的结果:
当你权限不足时会:
/*
* 文件资源管理器再进化
* 对文件进行添加、更改文件名、删除
* 程序中以自定义的MyAdapter来设置显示数据传入存储文件名与
* 文件路径的两个List对象,使用setListAdapter()将数据设置给
* ListView。当用户单机item时,时会触犯onListItemClick(),
* 此时程序会判断item是文件夹还是文件,是文件夹的话,就展开下
* 一层目录,是文件的话就运行自定义的fileHandle()。fileHandle()
* 这个方法被调用时,会先弹出含有打开文件、更改文件名、删除文件
* 三个选项的AlertDialog。当单机任何一个item时,AlertDialog的
* onClick()事件就会被触发,会依照所选择的item功能来运行不同的
* 动作。
* 当有文件被更改或被删除时,要再次运行getFileDir(),使ListView
* 里面的文件信息是最新的。
*/
import略;
- publicclassEx05_15ActivityextendsListActivity{
- privateList<String>item=null;//存放显示的名称
- privateList<String>paths=null;//存放文件的路径
- privateStringrootPath="/";//起始目录
- privateTextViewmPaht;
- privateViewmyView;
- privateEditTextmyEditText;
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mPaht=(TextView)findViewById(R.id.mPath);
- getFileDir(rootPath);
- }
- //取得文件架构的方法
- privatevoidgetFileDir(StringfilePath){
- //设置目前所在路径
- mPaht.setText(filePath);
- item=newArrayList<String>();
- paths=newArrayList<String>();
- Filef=newFile(filePath);
- File[]files=f.listFiles();
- if(filePath.equals(rootPath)){
- //第一笔设置为回到根目录
- item.add("b1");
- paths.add(rootPath);
- //第二笔设置为回到上层
- item.add("b2");
- paths.add(f.getParent());
- }
- //将所有文件添加到ArraryList中
- for(inti=0;i<files.length;i++){
- Filefile=files[i];
- item.add(file.getName());
- paths.add(file.getPath());
- }
- //使用自定义的MyAdapter来将数据传入ListActivist
- setListAdapter(newMyAdapter(this,item,paths));
- }
- //设置ListItem被按下是要做的动作
- protectedvoidonListenerItemClick(ListViewl,Viewv,intposition,longid){
- Filefile=newFile(paths.get(position));
- if(file.canRead()){
- if(file.isDirectory()){
- //如果是文件夹就在执行getFileDir()
- getFileDir(paths.get(position));
- }else{
- //如果是文件则调用fileHandle()
- fileHandle(file);
- }
- }else{
- //否则跳出AlertDialog显示权限不足
- newAlertDialog.Builder(this)
- .setTitle("提示信息")
- .setMessage("此文件不能读取或你没有足够的权限")
- .setPositiveButton("OK",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- }
- }).show();
- }
- }
- //fileHandle()处理方法
- privatevoidfileHandle(finalFilefile){
- //TODOAuto-generatedmethodstub
- //按下文件时OnClickListener()
- android.content.DialogInterface.OnClickListenerlistener1=newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich){
- //TODOAuto-generatedmethodstub
- if(which==0){
- //选择的item为打开文件
- openFile(file);
- }elseif(which==1){
- //选择的item为更改文件的名字
- LayoutInflaterfactory=LayoutInflater
- .from(Ex05_15Activity.this);
- //初始化myChoiceView,使用rename_alert_dialog为layyout
- myView=factory
- .inflate(R.layout.rename_alert_dialog,null);
- myEditText=(EditText)myView.findViewById(R.id.mEdit);
- //将原始的文件名先放入到EditText中
- myEditText.setText(file.getName());
- //一个更改文件名的Dialog的确定按钮的Listener
- android.content.DialogInterface.OnClickListenerlistener2=newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich){
- //TODOAuto-generatedmethodstub
- //取得修改后的文件路径
- Stringmodname=myEditText.getText().toString();
- finalStringpFile=file.getParentFile().getPath()
- +"/";
- finalStringnewPath=pFile+modname;
- //判断文件是否存在
- if(newFile(newPath).exists()){
- //排除修改文件时没修改直接送出的情况
- if(!modname.equals(file.getName())){
- //跳出警告文件名重复,并确认时候修改
- newAlertDialog.Builder(
- Ex05_15Activity.this)
- .setTitle("警告!")
- .setMessage("文件已存在,是否要覆盖?")
- .setPositiveButton(
- "确定",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODO
- //Auto-generated
- //methodstub
- //单机确定,覆盖原来的文件
- file.renameTo(newFile(
- newPath));
- //重新生成文件列表
- getFileDir(pFile);
- }
- })
- .setNegativeButton(
- "取消",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODO
- //Auto-generated
- //methodstub
- }
- }).show();
- }
- }else{
- //文件名不存在直接做修改动作
- file.renameTo(newFile(newPath));
- getFileDir(pFile);
- }
- }
- };
- //更改文件名时跳出对话框
- AlertDialogrenameDialog=newAlertDialog.Builder(
- Ex05_15Activity.this).create();
- renameDialog.setView(myView);
- renameDialog.setButton("确定",listener2);
- renameDialog.setButton2("取消",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- }
- });
- renameDialog.show();
- }else{
- //选择的item为删除文件
- newAlertDialog.Builder(Ex05_15Activity.this)
- .setTitle("注意")
- .setMessage("确定删除文件?")
- .setPositiveButton("确定",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- file.delete();
- getFileDir(file.getParent());
- }
- })
- .setNegativeButton("取消",
- newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(
- DialogInterfacedialog,
- intwhich){
- //TODOAuto-generatedmethodstub
- }
- }).show();
- }
- }
- };
- //选择一个文件时要跳出如何处理文件的ListDialog
- String[]menu={"打开文件","更改文件名","删除文件"};
- newAlertDialog.Builder(Ex05_15Activity.this).setTitle("你要做什么?")
- .setItems(menu,listener1)
- .setPositiveButton("取消",newDialogInterface.OnClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich){
- //TODOAuto-generatedmethodstub
- }
- }).show();
- }
- //在手机上打开文件的方法
- privatevoidopenFile(Filef){
- Intentintent=newIntent();
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setAction(android.content.Intent.ACTION_VIEW);
- //调用getMIMEType()来取得MimeType
- Stringtype=getMIMEType(f);
- //设置intent的file与MimeType
- intent.setDataAndType(Uri.fromFile(f),type);
- startActivity(intent);
- }
- privateStringgetMIMEType(Filef){
- //TODOAuto-generatedmethodstub
- Stringtype="";
- StringfName=f.getName();
- Stringend=fName
- .substring(fName.lastIndexOf("."+1),fName.length())
- .toLowerCase();
- if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")
- ||end.equals("xmf")||end.equals("wav")||end.equals("ogg")){
- type="audio";
- }elseif(end.equals("3gp")||end.equals("mp4")||end.equals("rmvb")){
- type="video";
- }elseif(end.equals("jpg")||end.equals("gif")||end.equals("png")
- ||end.equals("jpeg")||end.equals("bmp")){
- type="image";
- }else{
- //无法直接打开,就跳出供用户列表选择
- type="*";
- }
- type+="/*";
- returntype;
- }
- }
public class Ex05_15Activity extends ListActivity { private List<String> item = null;// 存放显示的名称 private List<String> paths = null;// 存放文件的路径 private String rootPath = "/";// 起始目录 private TextView mPaht; private View myView; private EditText myEditText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mPaht = (TextView) findViewById(R.id.mPath); getFileDir(rootPath); } // 取得文件架构的方法 private void getFileDir(String filePath) { // 设置目前所在路径 mPaht.setText(filePath); item = new ArrayList<String>(); paths = new ArrayList<String>(); File f = new File(filePath); File[] files = f.listFiles(); if (filePath.equals(rootPath)) { // 第一笔设置为回到根目录 item.add("b1"); paths.add(rootPath); // 第二笔设置为回到上层 item.add("b2"); paths.add(f.getParent()); } // 将所有文件添加到ArraryList中 for (int i = 0; i < files.length; i++) { File file = files[i]; item.add(file.getName()); paths.add(file.getPath()); } // 使用自定义的MyAdapter来将数据传入ListActivist setListAdapter(new MyAdapter(this, item, paths)); } // 设置ListItem被按下是要做的动作 protected void onListenerItemClick(ListView l, View v, int position, long id) { File file = new File(paths.get(position)); if (file.canRead()) { if (file.isDirectory()) { // 如果是文件夹就在执行getFileDir() getFileDir(paths.get(position)); } else { // 如果是文件则调用fileHandle() fileHandle(file); } } else { // 否则跳出AlertDialog显示权限不足 new AlertDialog.Builder(this) .setTitle("提示信息") .setMessage("此文件不能读取或你没有足够的权限") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } } // fileHandle()处理方法 private void fileHandle(final File file) { // TODO Auto-generated method stub // 按下文件时OnClickListener() android.content.DialogInterface.OnClickListener listener1 = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub if (which == 0) { // 选择的item为打开文件 openFile(file); } else if (which == 1) { // 选择的item为更改文件的名字 LayoutInflater factory = LayoutInflater .from(Ex05_15Activity.this); // 初始化myChoiceView,使用rename_alert_dialog为layyout myView = factory .inflate(R.layout.rename_alert_dialog, null); myEditText = (EditText) myView.findViewById(R.id.mEdit); // 将原始的文件名先放入到EditText中 myEditText.setText(file.getName()); // 一个更改文件名的Dialog的确定按钮的Listener android.content.DialogInterface.OnClickListener listener2 = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub // 取得修改后的文件路径 String modname = myEditText.getText().toString(); final String pFile = file.getParentFile().getPath() + "/"; final String newPath = pFile + modname; // 判断文件是否存在 if (new File(newPath).exists()) { // 排除修改文件时没修改直接送出的情况 if (!modname.equals(file.getName())) { // 跳出警告 文件名重复,并确认时候修改 new AlertDialog.Builder( Ex05_15Activity.this) .setTitle("警告!") .setMessage("文件已存在,是否要覆盖?") .setPositiveButton( "确定", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO // Auto-generated // method stub // 单机确定,覆盖原来的文件 file.renameTo(new File( newPath)); // 重新生成文件列表 getFileDir(pFile); } }) .setNegativeButton( "取消", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO // Auto-generated // method stub } }).show(); } } else { // 文件名不存在直接做修改动作 file.renameTo(new File(newPath)); getFileDir(pFile); } } }; // 更改文件名时跳出对话框 AlertDialog renameDialog = new AlertDialog.Builder( Ex05_15Activity.this).create(); renameDialog.setView(myView); renameDialog.setButton("确定", listener2); renameDialog.setButton2("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); renameDialog.show(); } else { // 选择的item为删除文件 new AlertDialog.Builder(Ex05_15Activity.this) .setTitle("注意") .setMessage("确定删除文件?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO Auto-generated method stub file.delete(); getFileDir(file.getParent()); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } } }; // 选择一个文件时要跳出如何处理文件的ListDialog String[] menu = { "打开文件", "更改文件名", "删除文件" }; new AlertDialog.Builder(Ex05_15Activity.this).setTitle("你要做什么?") .setItems(menu, listener1) .setPositiveButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show(); } // 在手机上打开文件的方法 private void openFile(File f) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); // 调用getMIMEType()来取得MimeType String type = getMIMEType(f); // 设置intent的file与MimeType intent.setDataAndType(Uri.fromFile(f), type); startActivity(intent); } private String getMIMEType(File f) { // TODO Auto-generated method stub String type = ""; String fName = f.getName(); String end = fName .substring(fName.lastIndexOf("." + 1), fName.length()) .toLowerCase(); if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") || end.equals("xmf") || end.equals("wav") || end.equals("ogg")) { type = "audio"; } else if (end.equals("3gp") || end.equals("mp4") || end.equals("rmvb")) { type = "video"; } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") || end.equals("jpeg") || end.equals("bmp")) { type = "image"; } else { // 无法直接打开,就跳出供用户列表选择 type = "*"; } type += "/*"; return type; } }
MyAdapter.java代码如下:
- /*自定义的Adapter,继承android.widget.BaseAdapter*/
- publicclassMyAdapterextendsBaseAdapter{
- /*
- *变量声明mIcon1:并到根目录的图文件mIcon2:并到第几层的图片mIcon3:文件夹的图文件mIcon4:文件的图片
- */
- privateLayoutInflatermInflater;
- privateBitmapmIcon1;
- privateBitmapmIcon2;
- privateBitmapmIcon3;
- privateBitmapmIcon4;
- privateList<String>items;
- privateList<String>paths;
- /*MyAdapter的构造符,传入三个参数*/
- publicMyAdapter(Contextcontext,List<String>it,List<String>pa){
- /*参数初始化*/
- mInflater=LayoutInflater.from(context);
- items=it;
- paths=pa;
- mIcon1=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.back01);
- mIcon2=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.back02);
- mIcon3=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.folder);
- mIcon4=BitmapFactory.decodeResource(context.getResources(),
- R.drawable.doc);
- }
- /*继承BaseAdapter,需重写method*/
- @Override
- publicintgetCount(){
- returnitems.size();
- }
- @Override
- publicObjectgetItem(intposition){
- returnitems.get(position);
- }
- @Override
- publiclonggetItemId(intposition){
- returnposition;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- ViewHolderholder;
- if(convertView==null){
- /*使用告定义的file_row作为Layout*/
- convertView=mInflater.inflate(R.layout.file_row,null);
- /*初始化holder的text与icon*/
- holder=newViewHolder();
- holder.text=(TextView)convertView.findViewById(R.id.text);
- holder.icon=(ImageView)convertView.findViewById(R.id.icon);
- convertView.setTag(holder);
- }else{
- holder=(ViewHolder)convertView.getTag();
- }
- Filef=newFile(paths.get(position).toString());
- /*设定[并到根目录]的文字与icon*/
- if(items.get(position).toString().equals("b1")){
- holder.text.setText("Backto/");
- holder.icon.setImageBitmap(mIcon1);
- }
- /*设定[并到第几层]的文字与icon*/
- elseif(items.get(position).toString().equals("b2")){
- holder.text.setText("Backto..");
- holder.icon.setImageBitmap(mIcon2);
- }
- /*设定[文件或文件夹]的文字与icon*/
- else{
- holder.text.setText(f.getName());
- if(f.isDirectory()){
- holder.icon.setImageBitmap(mIcon3);
- }else{
- holder.icon.setImageBitmap(mIcon4);
- }
- }
- returnconvertView;
- }
- /*classViewHolder*/
- privateclassViewHolder{
- TextViewtext;
- ImageViewicon;
- }
- }
/* 自定义的Adapter,继承android.widget.BaseAdapter */ public class MyAdapter extends BaseAdapter { /* * 变量声明 mIcon1:并到根目录的图文件 mIcon2:并到第几层的图片 mIcon3:文件夹的图文件 mIcon4:文件的图片 */ private LayoutInflater mInflater; private Bitmap mIcon1; private Bitmap mIcon2; private Bitmap mIcon3; private Bitmap mIcon4; private List<String> items; private List<String> paths; /* MyAdapter的构造符,传入三个参数 */ public MyAdapter(Context context, List<String> it, List<String> pa) { /* 参数初始化 */ mInflater = LayoutInflater.from(context); items = it; paths = pa; mIcon1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.back01); mIcon2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.back02); mIcon3 = BitmapFactory.decodeResource(context.getResources(), R.drawable.folder); mIcon4 = BitmapFactory.decodeResource(context.getResources(), R.drawable.doc); } /* 继承BaseAdapter,需重写method */ @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return items.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { /* 使用告定义的file_row作为Layout */ convertView = mInflater.inflate(R.layout.file_row, null); /* 初始化holder的text与icon */ holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } File f = new File(paths.get(position).toString()); /* 设定[并到根目录]的文字与icon */ if (items.get(position).toString().equals("b1")) { holder.text.setText("Back to /"); holder.icon.setImageBitmap(mIcon1); } /* 设定[并到第几层]的文字与icon */ else if (items.get(position).toString().equals("b2")) { holder.text.setText("Back to .."); holder.icon.setImageBitmap(mIcon2); } /* 设定[文件或文件夹]的文字与icon */ else { holder.text.setText(f.getName()); if (f.isDirectory()) { holder.icon.setImageBitmap(mIcon3); } else { holder.icon.setImageBitmap(mIcon4); } } return convertView; } /* class ViewHolder */ private class ViewHolder { TextView text; ImageView icon; } }
布局文件很简单,在这里我就不做详细介绍了。下面我我们来看看运行后的结果:
当你权限不足时会:
相关推荐
(3)支出管理:对支出信息进行添加、删除、修改和查看 (4)收入管理:对收入信息进行添加、删除、修改和查看 WEB服务端主要功能: (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)用户管理:对用户信息进行...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
可以把相应的文件添加到.gitignore 中,而.gitignore 这个Android Studio 插件根据不同的语言来选择模板,就不用自己在费事添加一些文件了,而且还有自动补全功能,过滤文件再也不要复制文件名了。我们做项目的时候...
非常方便汉化工作者,对APK或Dex文件进行简易的反编译回编译操作; ___________________________________________________________________ 功能特性 · 对*.Apk 文件 反编译 及 回编译 用于汉化修改 · 对*.Dex ...
5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——TelephonyManager...
5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——TelephonyManager...
5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——...
现在可以对里面的文件进行精简、添加、修改和替换apk。 如需要永久root,需要在app里面添加superuser.apk和在bin里面添加su。 并分别授予6755的权限。 全部修改后,点击另存,保存类型记得要选ext3镜像,要不...
5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——TelephonyManager...
getFileLastModified : 获取文件最后修改的毫秒时间戳 getFileCharsetSimple : 简单获取文件编码格式 getFileLines : 获取文件行数 getDirSize : 获取目录大小 getFileSize : 获取文件大小 getDirLength : 获取目录...
5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——TelephonyManager...
发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单...
- 编辑档案:在档案中添加/删除文件(zip,7zip,tar,apk,mtz); - 创建和解压缩多部分档案:7z,rar(仅解压缩); - 部分档案减压; - 打开压缩文件; - 从邮件应用程序打开存档文件; - 提取拆分档案:7z,zip...
5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——TelephonyManager...
5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——getCacheDir与getFilesDir 5.17 打开/关闭WiFi服务——WifiManager状态判断 5.18 取得SIM卡内的信息——TelephonyManager...
5.13 置换手机背景图——Gallery与setWallpaper整合实现 5.14 撷取手机现存桌面——getWallpaper与setImageDrawable 5.15 文件资源管理器再进化——JavaI/O修改文件名及删除 5.16 取得目前File与Cache的路径——...
删除以下文本:删除此行以从Bitbucket更改自述文件。 进行更改后,单击“提交” ,然后在对话框中再次提交。 提交页面将打开,您将看到刚刚所做的更改。 返回到“源”页面。 建立档案 接下来,您将向该存储库添加...
2、系统设置页添加删除传输详情已完成记录时同时删除本地文件的选项 3、优化删除文件时出现的页面闪烁问题 4、优化分享页面出现不可拖动的问题 5、系统设置页添加在我的电脑内显示云盘图标的选项 6、新建文件夹...