aFileChooser是android平台上的一个第三方文件选择器,其在github上的项目主页是:https://github.com/iPaulPro/aFileChooser

aFileChooser实现了在Android平台上高度可定制化的文件选择功能,aFileChooser在自己的项目代码中使用也比较简单。

写一个简单例子加以说明。

(1) 首先要配置Androidmanifest.xml文件:

android:name="com.ipaulpro.afilechooser.FileChooserActivity"

android:enabled="@bool/use_activity"

android:exported="true"

android:icon="@drawable/ic_launcher"

android:label="@string/choose_file" >

最好把读写文件的权限一并加上:

(2) 在Java代码中直接调用:

首先要触发文件选择,startActivityForResult调用aFileChooser已经提供好的选择器:

Intent getContentIntent = FileUtils.createGetContentIntent();

Intent intent = Intent.createChooser(getContentIntent, "用aFileChooser选择文件");

startActivityForResult(intent, REQUEST_CHOOSER);

然后在onActivityResult里面等待结果返回:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (requestCode) {

case REQUEST_CHOOSER:

if (resultCode == RESULT_OK) {

final Uri uri = data.getData();

//此处返回的Uri包含的路径信息形如:content://com.android.providers.media.documents/document/image%3A16460

Log.d("Uri", uri.toString());

String path = FileUtils.getPath(this, uri);

// Alternatively, use FileUtils.getFile(Context, Uri)

if (path != null && FileUtils.isLocal(path)) {

File file = new File(path);

Toast.makeText(this, file.getAbsolutePath()+"", Toast.LENGTH_SHORT).show();

}

}

break;

}

}

完整的代码:

package zhangphil.demo;

import java.io.File;

import com.ipaulpro.afilechooser.utils.FileUtils;

import android.app.Activity;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Toast;

public class MainActivity extends Activity {

private static final int REQUEST_CHOOSER = 0x1234;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.chooseButton).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent getContentIntent = FileUtils.createGetContentIntent();

Intent intent = Intent.createChooser(getContentIntent, "用aFileChooser选择文件");

startActivityForResult(intent, REQUEST_CHOOSER);

}

});

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (requestCode) {

case REQUEST_CHOOSER:

if (resultCode == RESULT_OK) {

final Uri uri = data.getData();

//此处返回的Uri包含的路径信息形如:content://com.android.providers.media.documents/document/image%3A16460

Log.d("Uri", uri.toString());

String path = FileUtils.getPath(this, uri);

// Alternatively, use FileUtils.getFile(Context, Uri)

if (path != null && FileUtils.isLocal(path)) {

File file = new File(path);

Toast.makeText(this, file.getAbsolutePath()+"", Toast.LENGTH_SHORT).show();

}

}

break;

}

}

}

aFileChooser另外一个比较有意义功能是:aFileChooser可以将Android 4.4及以上平台经由get content获取的Android形如:

content://com.android.providers.media.documents/document/image%3A16460的路径转化为人类可辨识的文件路径。此功能我在上面的示例代码中从log输出的那一行可知。

附文章:《Android设置头像,手机拍照或从本地相册选取图片作为头像》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。

android第三方打开文件,Android第三方文件选择器aFileChooser使用方法详解相关推荐

  1. php 文件扫描去重,PHP中的去重方法详解和文件下载

    本文主要和大家分享PHP中的去重方法详解和文件下载,在php中文件导入过程中,经常会遇到重复事件,那么就需要我们去重,然后进行下载. 1.思想 先设置一个存储主键数组,和一个空数组.解析文件,然后看要 ...

  2. android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解

    本文实例讲述了Android数据持久化之读写SD卡中内容的方法.分享给大家供大家参考,具体如下: 前面文章里讲的那三个方法:openFileOutput.openFileInput虽然都能通过流对象O ...

  3. 怎么利用迭代器写入mysql_流迭代器实现文件操作(读取和写入)方法详解

    流迭代器并不知道底层流的特性.当然,它们只适用于文本模式,否则它们不会关心数据是什么.流迭代器可以以文本模式来读写任何类型的流.这意味着除了其他的一些流之外,我们可以用迭代器以文本模式来读和写文件.在 ...

  4. android组件用法说明,Android第三方控件PhotoView使用方法详解

    Android第三方控件PhotoView使用方法详解 发布时间:2020-10-21 15:06:09 来源:脚本之家 阅读:74 作者:zhaihaohao1 PhotoView的简介: 这是一个 ...

  5. android开发者选项打开方式,打开、关闭安卓手机的开发者选项的方法详解

    现在使用安卓手机的用户人群很多,大家都知道安卓手机中的"开发人员选项"吧,最近,有用户在问如何关闭或者打开开发者选项.那么小编今天就给大家带来一个打开.关闭安卓手机的开发者选项的方 ...

  6. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)

    文章大纲 引言 一.Android Storage Access Framework 二.Storage Access Framework 的主要角色成员 1.Document Provider 文件 ...

  7. android收藏功能demo,Android使用Realm数据库实现App中的收藏功能(代码详解)

    前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPreferences存储数据: 文件存储数据: SQLite数据 ...

  8. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(二)

    文章大纲 引言 一.DirectFragment 1.当选中DirectoryFragment中RecyclerView的Item时 2.选中DirectoryFragment中RecyclerVie ...

  9. android中oncreate方法,android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...

最新文章

  1. 对前端界面工程师这个职位是怎么样理解的?
  2. 用python画奥迪标志_不知道不 OK!53 个 Python 经典面试题详解
  3. 市面上常见的TCP/IP以太网一卡通设备硬件产品电路拆解分析
  4. android.provider.documentscontract cannot be resolved.
  5. 在liferay strut2中如何使用session
  6. Pycharm使用black作为Python代码格式化外部工具
  7. 【转】 差分约束系统详解(转化为最短路) (概念)
  8. 6个web前端核心技术,你学到哪个了呢?
  9. LeetCode数据库 175. 组合两个表
  10. java反射获取实体类_java 反射获取类对象的三种方式
  11. HMC5883L校准
  12. java gc 监控_JAVA网站full GC监控脚本
  13. dns按来路ip智能解析_云解析实现智能解析
  14. Jquery不同版本的兼容性
  15. PDF转图片哪个格式最清晰?PDF转高清图片的方法
  16. SAS9.4+sid更新
  17. 将titles_test表名修改为titles_2017
  18. 圆通快递查询电子面单接口对接快递鸟api指南
  19. Excel制作四分位图
  20. Lego Boost打算把所有乐高玩具变成可编程机器人

热门文章

  1. 【异常】Maven提示异常XmlPullParserException: Unrecognised tag: ‘exclusion‘ (position: START_TAG seen
  2. 基于飞桨复现图像分类模型TNT,实现肺炎CT分类
  3. [笔记分享] [Camera] MTK Camera AF及tuning
  4. RealFlow在线教程翻译(2)——Foam with SPH Fluids(基于平滑粒子流体动力学算法(SPH)的流体泡沫)
  5. init_modue和finit_module
  6. 极客日报:三星嘲讽iPhone13:120Hz高刷我们早用上了;华为撤回对OPPO欧洲专利的异议;淘宝搜索崩了登上热搜
  7. 执行shell脚本进入指定目录
  8. 离散数学(一)——集合
  9. 网页上facebook分享功能的具体实现
  10. 小程序showLoading:网络请求前显示“加载中...”,请求完成时关闭加载中