Android加载SD卡目录,文件夹遍历,图片设置,设置文件对应打开方式等
16lz
2021-01-23
阅读更多
此案例主要说的是Android使用GridView加载SD卡下所有目录,文件夹多层遍历,文件图标修改,设置文件对应打开方式等功能。
如图:
代码:
public class GridViewFile extends Activity implements View.OnClickListener {private Context context;private TextView tv_title, textView;private GridView listView;private final String MUSIC_PATH = "/";// 记录当前路径下 的所有文件的数组File currentParent;// 记录当前路径下的所有文件的文件数组File[] currentFiles;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);context = this;initView();}public void initView() {findViewById(R.id.public_top_img_close).setOnClickListener(this);listView = (GridView) findViewById(R.id.gridview);textView = (TextView) findViewById(R.id.llss);onLoad();}public void onLoad() {ListSongsName();}private void ListSongsName() {// 获取系统的SD卡目录File root = new File(MUSIC_PATH);// 如果SD卡存在if (root.exists()) {currentParent = root;currentFiles = root.listFiles();// 获取root目录下的所有文件// 使用当前陆慕下的全部文件,文件夹来填充ListViewinflateListView(currentFiles);}// 为ListView的列表项的单击事件绑定监视器listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// 用户点击了文件,则调用手机已安装软件操作该文件if (currentFiles[position].isFile()) {onError(currentFiles[position].getPath() + "1");Intent intent = OpenFile.openFile(currentFiles[position].getPath());startActivity(intent);} else {// 获取currentFiles[position]路径下的所有文件File[] tmp = currentFiles[position].listFiles();if (tmp == null || tmp.length == 0) {Toast.makeText(GridViewFile.this, "空文件夹!",Toast.LENGTH_SHORT).show();}// ifelse {// 获取用户单击的列表项对应的文件夹,设为当前的父文件夹currentParent = currentFiles[position];// 保存当前文件夹内的全部问价和文件夹currentFiles = tmp;inflateListView(currentFiles);}}}});}// 更新列表private void inflateListView(File[] files) {if (files.length == 0)Toast.makeText(GridViewFile.this, "sd卡不存在", Toast.LENGTH_SHORT).show();else {// 创建一个List集合,List集合的元素是MapList
/** * 根据路径调用系统对应的应用打开文件 */public class OpenFile { public static Intent openFile(String filePath){ File file = new File(filePath); if(!file.exists()) return null; /* 取得扩展名 */ String end=file.getName().substring(file.getName().lastIndexOf(".") + 1,file.getName().length()).toLowerCase(); /* 依扩展名的类型决定MimeType */ if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")|| end.equals("xmf")||end.equals("ogg")||end.equals("wav")){ return getAudioFileIntent(filePath); }else if(end.equals("3gp")||end.equals("mp4")){ return getAudioFileIntent(filePath); }else if(end.equals("jpg")||end.equals("gif")||end.equals("png")|| end.equals("jpeg")||end.equals("bmp")){ return getImageFileIntent(filePath); }else if(end.equals("apk")){ return getApkFileIntent(filePath); }else if(end.equals("ppt")){ return getPptFileIntent(filePath); }else if(end.equals("xls")){ return getExcelFileIntent(filePath); }else if(end.equals("doc")){ return getWordFileIntent(filePath); }else if(end.equals("pdf")){ return getPdfFileIntent(filePath); }else if(end.equals("chm")){ return getChmFileIntent(filePath); }else if(end.equals("txt")){ return getTextFileIntent(filePath,false); }else{ return getAllIntent(filePath); } } //Android获取一个用于打开APK文件的intent public static Intent getAllIntent( String param ) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW);//动作 Uri uri = Uri.fromFile(new File(param ));//转换类型 intent.setDataAndType(uri,"*/*"); return intent; } //Android获取一个用于打开APK文件的intent public static Intent getApkFileIntent( String param ) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri,"application/vnd.android.package-archive"); return intent; } //Android获取一个用于打开VIDEO文件的intent public static Intent getVideoFileIntent( String param ) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "video/*"); return intent; } //Android获取一个用于打开AUDIO文件的intent public static Intent getAudioFileIntent( String param ){ Intent intent = new Intent("android.intent.action.VIEW"); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("oneshot", 0); intent.putExtra("configchange", 0); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "audio/*"); return intent; } //Android获取一个用于打开Html文件的intent public static Intent getHtmlFileIntent( String param ){ Uri uri = Uri.parse(param ).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(param ).build(); Intent intent = new Intent("android.intent.action.VIEW"); intent.setDataAndType(uri, "text/html"); return intent; } //Android获取一个用于打开图片文件的intent public static Intent getImageFileIntent( String param ) { Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "image/*"); return intent; } //Android获取一个用于打开PPT文件的intent public static Intent getPptFileIntent( String param ){ Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "application/vnd.ms-powerpoint"); return intent; } //Android获取一个用于打开Excel文件的intent public static Intent getExcelFileIntent( String param ){ Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "application/vnd.ms-excel"); return intent; } //Android获取一个用于打开Word文件的intent public static Intent getWordFileIntent( String param ){ Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "application/msword"); return intent; } //Android获取一个用于打开CHM文件的intent public static Intent getChmFileIntent( String param ){ Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "application/x-chm"); return intent; } //Android获取一个用于打开文本文件的intent public static Intent getTextFileIntent( String param, boolean paramBoolean){ Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (paramBoolean){ Uri uri1 = Uri.parse(param ); intent.setDataAndType(uri1, "text/plain"); }else{ Uri uri2 = Uri.fromFile(new File(param )); intent.setDataAndType(uri2, "text/plain"); } return intent; } //Android获取一个用于打开PDF文件的intent public static Intent getPdfFileIntent( String param ){ Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.fromFile(new File(param )); intent.setDataAndType(uri, "application/pdf"); return intent; }}
不要忘记在AndroidManifest.xml加权限哦!
源码点击下载
更多相关文章
- 我的android 第9天 - 文件存储
- Android之怎么操作文件(读写以及保存到sdcard)
- Android中strings.xml文件
- Android Studio导入.so库文件方法
- Android显示PDF文件之iText
- Android中解析doc、docx、xls、xlsx格式文件
- Android中除了利用VideoView、Mediaplayer播放视频文件外,还可以
- Android 布局文件属性讲解
- (Android)JavaSocket编程,文件上传到服务器,客户端Android,服务器端J2