android第三方打开文件,Android第三方文件选择器aFileChooser使用方法详解
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使用方法详解相关推荐
- php 文件扫描去重,PHP中的去重方法详解和文件下载
本文主要和大家分享PHP中的去重方法详解和文件下载,在php中文件导入过程中,经常会遇到重复事件,那么就需要我们去重,然后进行下载. 1.思想 先设置一个存储主键数组,和一个空数组.解析文件,然后看要 ...
- android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解
本文实例讲述了Android数据持久化之读写SD卡中内容的方法.分享给大家供大家参考,具体如下: 前面文章里讲的那三个方法:openFileOutput.openFileInput虽然都能通过流对象O ...
- 怎么利用迭代器写入mysql_流迭代器实现文件操作(读取和写入)方法详解
流迭代器并不知道底层流的特性.当然,它们只适用于文本模式,否则它们不会关心数据是什么.流迭代器可以以文本模式来读写任何类型的流.这意味着除了其他的一些流之外,我们可以用迭代器以文本模式来读和写文件.在 ...
- android组件用法说明,Android第三方控件PhotoView使用方法详解
Android第三方控件PhotoView使用方法详解 发布时间:2020-10-21 15:06:09 来源:脚本之家 阅读:74 作者:zhaihaohao1 PhotoView的简介: 这是一个 ...
- android开发者选项打开方式,打开、关闭安卓手机的开发者选项的方法详解
现在使用安卓手机的用户人群很多,大家都知道安卓手机中的"开发人员选项"吧,最近,有用户在问如何关闭或者打开开发者选项.那么小编今天就给大家带来一个打开.关闭安卓手机的开发者选项的方 ...
- Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)
文章大纲 引言 一.Android Storage Access Framework 二.Storage Access Framework 的主要角色成员 1.Document Provider 文件 ...
- android收藏功能demo,Android使用Realm数据库实现App中的收藏功能(代码详解)
前 言 App数据持久化功能是每个App必不可少的功能,而Android最常用的数据持久化方式主要有以下的五种方式: 使用SharedPreferences存储数据: 文件存储数据: SQLite数据 ...
- Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(二)
文章大纲 引言 一.DirectFragment 1.当选中DirectoryFragment中RecyclerView的Item时 2.选中DirectoryFragment中RecyclerVie ...
- android中oncreate方法,android开发之onCreate( )方法详解
这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...
最新文章
- 对前端界面工程师这个职位是怎么样理解的?
- 用python画奥迪标志_不知道不 OK!53 个 Python 经典面试题详解
- 市面上常见的TCP/IP以太网一卡通设备硬件产品电路拆解分析
- android.provider.documentscontract cannot be resolved.
- 在liferay strut2中如何使用session
- Pycharm使用black作为Python代码格式化外部工具
- 【转】 差分约束系统详解(转化为最短路) (概念)
- 6个web前端核心技术,你学到哪个了呢?
- LeetCode数据库 175. 组合两个表
- java反射获取实体类_java 反射获取类对象的三种方式
- HMC5883L校准
- java gc 监控_JAVA网站full GC监控脚本
- dns按来路ip智能解析_云解析实现智能解析
- Jquery不同版本的兼容性
- PDF转图片哪个格式最清晰?PDF转高清图片的方法
- SAS9.4+sid更新
- 将titles_test表名修改为titles_2017
- 圆通快递查询电子面单接口对接快递鸟api指南
- Excel制作四分位图
- Lego Boost打算把所有乐高玩具变成可编程机器人
热门文章
- 【异常】Maven提示异常XmlPullParserException: Unrecognised tag: ‘exclusion‘ (position: START_TAG seen
- 基于飞桨复现图像分类模型TNT,实现肺炎CT分类
- [笔记分享] [Camera] MTK Camera AF及tuning
- RealFlow在线教程翻译(2)——Foam with SPH Fluids(基于平滑粒子流体动力学算法(SPH)的流体泡沫)
- init_modue和finit_module
- 极客日报:三星嘲讽iPhone13:120Hz高刷我们早用上了;华为撤回对OPPO欧洲专利的异议;淘宝搜索崩了登上热搜
- 执行shell脚本进入指定目录
- 离散数学(一)——集合
- 网页上facebook分享功能的具体实现
- 小程序showLoading:网络请求前显示“加载中...”,请求完成时关闭加载中