Android第三方文件选择器:aFileChooser
Android第三方文件选择器:aFileChooser
aFileChooser是Android平台上的一个第三方文件选择器,其在github上的项目主页是:https://github.com/iPaulPro/aFileChooser
aFileChooser实现了在Android平台上高度可定制化的文件选择功能,aFileChooser在自己的项目代码中使用也比较简单。
写一个简单例子加以说明。
(1) 首先要配置Androidmanifest.xml文件:
<activity
android:name="com.ipaulpro.afilechooser.FileChooserActivity"
android:enabled="@bool/use_activity"
android:exported="true"
android:icon="@drawable/ic_launcher"
android:label="@string/choose_file" >
<intent-filter>
<action android:name="android.intent.action.GET_CONTENT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.OPENABLE" /> <data android:mimeType="*/*" />
</intent-filter>
</activity>
最好把读写文件的权限一并加上:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(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输出的那一行可知。
附录文章:
1,《Android设置头像,手机拍照或从本地相册选取图片作为头像》链接地址:http://blog.csdn.net/zhangphil/article/details/44829747
Android第三方文件选择器:aFileChooser的更多相关文章
- 也发一个自己实现的android简单文件选择器代码。支持多卡,排序
一个很简单的文件选择器对话框,支持双sd卡,当然前提是要有sd卡..并且实现了排序效果. 只有100多行的代码,基本的思路就是用listview显示目录下的所有子文件,再判断是文件还是目录. 利用Co ...
- Android文件选择器的实例分享
本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件. 此实例的实现过程很简单,这样可以让大家快速的熟悉 ...
- NDK中android.mk文件的简单介绍和第三方库的调用
先贴一个样例,然后解释一下: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := mydjvuapi SRC_FILE_ ...
- android文件选择器、仿淘宝编辑页面、新手引导层等源码
Android精选源码 单片机和安卓应用,传感器 文件选择器 android滑动选择的尺子view源码 android视频录制 视频压缩的源码 仿今日头条顶部导航指示器源码 Android框架+常用控 ...
- cocos2d-x 3.0 引用第三方库 及编译成apk时android mk文件写法
cocos2d-x 3.0 中.假设你须要使用CocosStudio.Extensions扩展库 等等.都须要自己手动加入. 加入过程例如以下:(比方说如今我要加入libExtensions,libC ...
- Android 第三方开源库收集整理(转)
原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, ...
- 45.Android 第三方开源库收集整理(转)
原文地址:http://blog.csdn.net/caoyouxing/article/details/42418591 Android开源库 自己一直很喜欢Android开发,就如博客签名一样, ...
- Android.mk 文件语法详解
0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...
- Xamarin Android布局文件没有智能提示
Xamarin Android布局文件没有智能提示 在Visual Studio 2015中,Android项目的Main.axml文件没有智能提示,不便于布局文件的编写.解决办法:(1)从Xamar ...
随机推荐
- scrapy xpath中提取多个class值
xpath中没有提供对class的原生查找方法.但是 stackoverflow 看到了一个很有才的回答: This selector should work but will be more eff ...
- Mac 终端执行JavaScript
创建: 2017/09/16 第一步 打开命令 输入alias jsc="/System/Library/Frameworks/JavaScriptCore.framework/ ...
- JavaScript中.和[]有什么区别?
.与[]都可以用于读取或修改对象属性. <script> var myData={ name:"Adam", weather:"sunny", }; ...
- T4模板使用记录,生成Model、Service、Repository
自己目前在搭建一个.NET Core的框架,本来是打算使用前端做代码生成器直接生成到文件的,快做好了.感觉好像使用T4更方便一些,所以也就有了这篇文章~ 我还是有个问题没解决,就是我想生成每个类(接 ...
- linux上搭建svn
参照网址:http://www.cnblogs.com/LusYoHo/p/6056377.html(如何在linux下搭建svn服务) http://www.cnblo ...
- 自己做的一个android 音视频播放器
欢迎大家下载: http://download.csdn.net/detail/q610098308/8504335
- [转]linux 下 join命令总结
转自:http://blog.chinaunix.net/uid-20754793-id-177777.html 有两个文件需要合并,开始写了脚本实现,忽然发现join命令能够完全替代,总结了一下jo ...
- SVN系列学习(四)-TortoiseSVN其他操作
1.新建分支 第一步:从SVN上CheckOut一份,要作为分支模板的文件 第二步:右击[TortoiseSVN]-选择[Branch/tag] 备注说明,[指明分支路径] 第三步:删除电脑上的ZJH ...
- SublimeText学习(二)-基本操作
1.查看已安装的插件 看到已经安装的插件,看到了在上一篇中安装的Emmet 2.设置主题与字体 方法一: 方法二: 工具栏中 [Preference-浏览程序包]找到[Default文件夹]-用Sub ...
- 从"嘿,今晚..."谈消息安全传输中的技术点
一.初级阶段:信息裸传 特点:在网络上传递明文 黑客定理一:网络上传递的数据是不安全的,属网络于黑客公共场所,能被截取 结果:传递明文无异于不穿衣服裸奔 改进方案:先加密,再在网络上传输 二.进阶阶段 ...