android intent 获取文件名,android – 如何从Intent.ACTION_GET_CONTENT返回的URI中提取文件名?...

我正在使用第三方文件管理器从文件系统中选择一个文件(在我的案例中为PDF)。

这是我如何启动活动:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.setType(getString(R.string.app_pdf_mime_type));

intent.addCategory(Intent.CATEGORY_OPENABLE);

String chooserName = getString(R.string.Browse);

Intent chooser = Intent.createChooser(intent, chooserName);

startActivityForResult(chooser, ActivityRequests.BROWSE);

这是我在onActivityResult中有的:

Uri uri = data.getData();

if (uri != null) {

if (uri.toString().startsWith("file:")) {

fileName = uri.getPath();

} else { // uri.startsWith("content:")

Cursor c = getContentResolver().query(uri, null, null, null, null);

if (c != null && c.moveToFirst()) {

int id = c.getColumnIndex(Images.Media.DATA);

if (id != -1) {

fileName = c.getString(id);

}

}

}

}

if-else的目的是向后兼容。我不知道这是否是获取文件名的最佳方法,因为我发现其他文件管理器返回所有类型的东西。

例如,Documents ToGo会返回以下内容:

content://com.dataviz.dxtg.documentprovider/document/file%3A%2F%2F%2Fsdcard%2Fdropbox%2FTransfer%2Fconsent.pdf

getContentResolver()。query()返回null。

为了使事情更有趣,未命名的文件管理器(我从客户端日志中得到这个URI)返回的内容如下:

/./sdcard/downloads/.bin

有没有一种从URI中提取文件名的方法,还是应该使用字符串解析?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值