android打开各种文件格式,Android小技巧之打开文件管理器及判断文件类型

有时候,想实现以下功能:跳转到文件管理器,让用户选择一个文件,并获取用户选择的结果。

跳转到文件管理器可以如下Intent跳转简单实现:

//打开文件管理器

Intent i = new Intent(Intent.ACTION_GET_CONTENT);

i.setType("file/*");

startActivity(i);

为了获取用户选择的结果,最好是startActivityForResult()方法,以便在onActivityResult()中获取用户所选择的结果。

假设当前的需求是让用户选择一张图片。

Intent i = new Intent(Intent.ACTION_GET_CONTENT);

i.setType("image/*");

startActivityForResult(i, MY_REQUEST_CODE);

此时会弹出对话框,询问要以什么方式来打开,一般可选项有图库(系统自带的,如果有的话)和文件管理器(如果有的话)。

用户选择了一个文件后,会返回原Activity,在onActivityResult()方法里,可如下操作以判断文件类型。

@Override

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

if(requestCode == PHOTO_REQUEST_CODE)//自定义的一个static final int常量

{

if(resultCode == RESULT_OK)

{

//得到文件的Uri

Uri uri = data.getData();

ContentResolver resolver = getContentResolver();

//ContentResolver对象的getType方法可返回形如content://的Uri的类型

//如果是一张图片,返回结果为image/jpeg或image/png等

String fileType = resolver.getType(uri);

if(fileType.startsWith("image"))//判断用户选择的是否为图片

{

//根据返回的uri获取图片路径

Cursor cursor = resolver.query(uri,

new String[]{MediaStore.Images.Media.DATA}, null, null, null);

cursor.moveToFirst();

String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));

//do anything you want

}

}

}

}

我在网上看到不少童鞋说,获取文件的路径,然后根据后缀名来判断是否为图片类型。我个人觉得这样比较繁琐而且不太靠谱,可能会漏掉一些图片后缀名的判断。

所以我采用了上述的方法来判断图片的类型。其它文件类型可以类似操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值