android 资源浏览控件,Android:文件浏览器 使用

该博客介绍了如何在Android应用中实现一个简单的文件选择器。通过使用Intent ACTION_GET_CONTENT,结合Category OPENABLE,允许用户选择任意类型的文件。选定文件后,通过onActivityResult获取文件路径,并展示了如何处理用户没有安装文件管理器的情况。此外,还提到了添加文件类型过滤器的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private static final int FILE_SELECT_CODE = 0;

private void showFileChooser() {

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.setType("*/*");

intent.addCategory(Intent.CATEGORY_OPENABLE);

try {

startActivityForResult(

Intent.createChooser(intent, "Select a File to Upload"),

FILE_SELECT_CODE);

} catch (android.content.ActivityNotFoundException ex) {

// Potentially direct the user to the Market with a Dialog

Toast.makeText(this, "Please install a File Manager.",

Toast.LENGTH_SHORT).show();

}

}

@Override

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

switch (requestCode) {

case FILE_SELECT_CODE:

if (resultCode == RESULT_OK) {

// Get the Uri of the selected file

Uri uri = data.getData();

Log.d(TAG, "File Uri: " + uri.toString());

// Get the path

String path = FileUtils.getPath(this, uri);//这里可能需要加个异常捕捉处理

Log.d(TAG, "File Path: " + path);

// Get the file instance

// File file = new File(path);

// Initiate the upload

}

break;

}

super.onActivityResult(requestCode, resultCode, data);

}

public static String getPath(Context context, Uri uri) throws URISyntaxException {

if ("content".equalsIgnoreCase(uri.getScheme())) {

String[] projection = { "_data" };

Cursor cursor = null;

try {

cursor = context.getContentResolver().query(uri, projection, null, null, null);

int column_index = cursor.getColumnIndexOrThrow("_data");

if (cursor.moveToFirst()) {

return cursor.getString(column_index);

}

} catch (Exception e) {

// Eat it

}

}

else if ("file".equalsIgnoreCase(uri.getScheme())) {

return uri.getPath();

}

return null;

}

1a90156f4336

文件浏览器效果.png

如果你能墙,下面的链接可以看看:

原文如下:

android-file-chooser

Android file chooser

A simple file chooser to android applications.

Possible add filters extensions, ex:

ArrayList extensions = new ArrayList();

extensions.add(".pdf");

extensions.add(".xls");

extensions.add(".xlsx");

intent.putStringArrayListExtra("filterFileExtension", extensions);

startActivityForResult(intent, FILE_CHOOSER);```

> Returns

```@Override

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

if ((requestCode == FILE_CHOOSER) && (resultCode == -1)) {

String fileSelected = data.getStringExtra("fileSelected");

Toast.makeText(this, fileSelected, Toast.LENGTH_SHORT).show();

}

}```

![https://lh3.googleusercontent.com/-6RoRJPyHxTM/TtmTO4L2RfI/AAAAAAAAA70/EBzuRjv9Nf4/s720/fileChooser.png](https://lh3.googleusercontent.com/-6RoRJPyHxTM/TtmTO4L2RfI/AAAAAAAAA70/EBzuRjv9Nf4/s720/fileChooser.png)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值