aFileChooser:兼容android2.1+的文件选择器

泡在网上的日子 / 文 发表于2014-08-21 15:37 次阅读 文件,android

aFileChooser是一个简化文件浏览与选择过程的android项目。他主要是面向开发者,让任何人都能轻易实现自己的文件浏览器或者文件选择对话框。

intents使得第三方app在选择系统内容资源成为可能,但是如果你想要用户能根据自己的想法选择任意一个文件,你必须调用一个已经存在的文件浏览器,但是很多手机厂商并没有文件浏览器可用,因此很多应用的在遇到这个问题的时候往往是提示用户安装一个文件浏览器。aFileChooser的出现解决了这个问题,让我们可以构件自己的文件浏览器。


他有几个优点:

支持按分类选择;

兼容api 7以上;

界面美观;

可定制行强;

功能完善;

选择文件目录中的文件:

使用方法:

将aFileChooser的库文件导入项目。

FileChooserActivity写入到你的AndroidManifest.xml文件中:

<activity
    android:name="com.ipaulpro.afilechooser.FileChooserActivity"
    android:icon="@drawable/ic_chooser"
    android:enabled="@bool/use_activity"
    android:exported="true"
    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>

注意android:exported="true"是必须的。

下面演示如何调用这个activity并获得文件选择器的返回值:

private static final int REQUEST_CHOOSER = 1234;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Create the ACTION_GET_CONTENT Intent
    Intent getContentIntent = FileUtils.createGetContentIntent();
    Intent intent = Intent.createChooser(getContentIntent, "Select a file");
    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();
                // Get the File path from the Uri
                String path = FileUtils.getPath(this, uri);
                // Alternatively, use FileUtils.getFile(Context, Uri)
                if (path != null && FileUtils.isLocal(path)) {
                    File file = new File(path);
                }
            }
            break;
    }
}

项目地址:https://github.com/iPaulPro/aFileChooser


更正:github上给出的demo中是使用FileUtils.createGetContentIntent()来得到Intent,在4.4中会弹出一个功能比较复杂的activity,实际上这是由系统提供的一个叫DocumentsUI的activity 跟这个项目一点关系都没有,只不过他的调用与返回值形式和FileChooserActivity的调用与返回值形式一致。如果要用在4.4中使用FileChooserActivity的界面,不要使用FileUtils.createGetContentIntent()提供的intent,而是直接

Intent intent = new Intent(FileChooserExampleActivity.this,FileChooserActivity.class);

同时在FileChooserExampleActivity的AndroidManifest中将 android:enabled属性去掉(demo中加了这一属性)


当然 在4.4以下的版本中会弹出如下的chooser:

然后选择select a file 就会进入到FileChooserActivity中。

收藏 赞 (2) 踩 (0)
上一篇:android图片文件的路径地址与Uri的相互转换
一个android文件的Uri地址一般如下: content://media/external/images/media/62026 这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢? 其实很简单,直接上代码: /** * Try to return the absolute file path from the given Uri *
下一篇:android下拉刷新框架
本站已经有很多文章介绍下拉刷新的不同实现方式,比如在 谈谈安卓中的下拉刷新,上拉加载ListView的实现 一文中就介绍了一个 XListView 的下拉刷新库,非常不错,下拉刷新这种用户交互最早由twitter创始人洛伦布里切特(Loren Brichter)发明,有理论认为,下