• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android中调用文件管理器并返回选中文件的路径,android文件管理器

Android中调用文件管理器并返回选中文件的路径,android文件管理器

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android 文件管理器,android re文件管理器,文件管理器,re文件管理器,es文件管理器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android中调用文件管理器并返回选中文件的路径,android文件管理器


实际项目中经常需要调用文件管理器,选择下载路径或者上传的本地文件路径。今天就给大家做个demo示范该功能的实现过程。

一、实现效果预览

以下为三星S6的样机测试效果,当然不同手机调用后的效果不一样。

二、代码实现

布局文件很简单,就一个Button和TextView,这里不示范了,直接上实现代码:
  1 package com.panhouye.selectfile;
  2 
  3 import android.annotation.SuppressLint;
  4 import android.app.Activity;
  5 import android.content.ContentUris;
  6 import android.content.Context;
  7 import android.content.Intent;
  8 import android.database.Cursor;
  9 import android.net.Uri;
 10 import android.os.Build;
 11 import android.os.Bundle;
 12 import android.os.Environment;
 13 import android.provider.DocumentsContract;
 14 import android.provider.MediaStore;
 15 import android.support.v7.app.AppCompatActivity;
 16 import android.view.View;
 17 import android.widget.Button;
 18 import android.widget.TextView;
 19 import android.widget.Toast;
 20 
 21 public class MainActivity extends AppCompatActivity {
 22     TextView tv;
 23     @Override
 24     protected void onCreate(Bundle savedInstanceState) {
 25         super.onCreate(savedInstanceState);
 26         setContentView(R.layout.activity_main);
 27         Button btn = (Button) findViewById(R.id.btn);
 28         tv = (TextView) findViewById(R.id.tv);
 29         btn.setOnClickListener(new View.OnClickListener() {
 30             @Override
 31             public void onClick(View v) {
 32                 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
 33                 //intent.setType(“image/*”);//选择图片
 34                 //intent.setType(“audio/*”); //选择音频
 35                 //intent.setType(“video/*”); //选择视频 (mp4 3gp 是android支持的视频格式)
 36                 //intent.setType(“video/*;image/*”);//同时选择视频和图片
 37                 intent.setType("*/*");//无类型限制
 38                 intent.addCategory(Intent.CATEGORY_OPENABLE);
 39                 startActivityForResult(intent, 1);
 40             }
 41         });
 42     }
 43     String path;
 44     @Override
 45     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 46         if (resultCode == Activity.RESULT_OK) {
 47             Uri uri = data.getData();
 48             if ("file".equalsIgnoreCase(uri.getScheme())){//使用第三方应用打开
 49                 path = uri.getPath();
 50                 tv.setText(path);
 51                 Toast.makeText(this,path+"11111",Toast.LENGTH_SHORT).show();
 52                 return;
 53             }
 54             if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {//4.4以后
 55                 path = getPath(this, uri);
 56                 tv.setText(path);
 57                 Toast.makeText(this,path,Toast.LENGTH_SHORT).show();
 58             } else {//4.4以下下系统调用方法
 59                 path = getRealPathFromURI(uri);
 60                 tv.setText(path);
 61                 Toast.makeText(MainActivity.this, path+"222222", Toast.LENGTH_SHORT).show();
 62             }
 63         }
 64     }
 65 
 66     public String getRealPathFromURI(Uri contentUri) {
 67         String res = null;
 68         String[] proj = { MediaStore.Images.Media.DATA };
 69         Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
 70         if(null!=cursor&&cursor.moveToFirst()){;
 71             int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
 72             res = cursor.getString(column_index);
 73             cursor.close();
 74         }
 75         return res;
 76     }
 77 
 78     /**
 79      * 专为Android4.4设计的从Uri获取文件绝对路径,以前的方法已不好使
 80      */
 81     @SuppressLint("NewApi")
 82     public String getPath(final Context context, final Uri uri) {
 83 
 84         final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
 85 
 86         // DocumentProvider
 87         if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {
 88             // ExternalStorageProvider
 89             if (isExternalStorageDocument(uri)) {
 90                 final String docId = DocumentsContract.getDocumentId(uri);
 91                 final String[] split = docId.split(":");
 92                 final String type = split[0];
 93 
 94                 if ("primary".equalsIgnoreCase(type)) {
 95                     return


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android中调用文件管理器并返回选中文件的路径,android文件管理器

相关文章

  • 2017-05-26android 水准仪的实现(方向传感器的使用)
  • 2017-05-26高仿360手机卫士应用源码,高仿360卫士源码
  • 2017-05-26Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验
  • 2017-05-26RadioButton与CheckBox,radiobutton
  • 2017-05-26[android] 手机卫士设置向导页面,android向导
  • 2017-05-26mongodb3.0.7生产环境扩容存储记录
  • 2017-05-221.0 Android基础入门教程
  • 2017-05-26Android网络编程使用HttpClient访问web站点
  • 2017-05-227.1.1 Android网络编程要学的东西与Http协议学习
  • 2017-05-26Android新手入门2016(8)--ListView之ArrayAdapter

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android如何使用Https
    • Unity编译时找不到AndroidSDK的问题 | Unable to list target platforms(转载),unityengine.ui找不到
    • Android开发2:事件处理及实现简单的对话框,android开发
    • android源码解析之(十一)--)应用进程启动流程
    • 初探ListView,初探网
    • Android开发: fragment解析及案例
    • 360多渠道打包,360打包
    • 沉浸式状态栏与导航条,状态栏导航条
    • Android 手机卫士--导航界面4的业务逻辑,android卫士
    • Android系统架构,android系统结构

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有