需要写一些程序,可以打开图片和PDF,本地的图片和PDF可以正常打开,因为他们具有具体的物理路径(/mnt/sdcard/pic/1.png).
但是要求可以打开,邮件中的附件,图片和PDF,邮件中的附件得到的URI格式是:
content://com.android.email.attachmentprovider/1/1/RAW
请问怎样根据这个URI得到文件的名称(文件名+后缀)。
我的想法是,通过流的方式解析这个URI,在SD卡中生成一个文件,然后再读取这个本地的文件。
但是这个文件名,应该怎样获得?
大家有更好的方法吗?

解决方案 »

  1.   

    http://www.eoeandroid.com/thread-168501-1-1.html
      

  2.   

    你想通过URI直接获得对应文件的绝对路径?下面的是我读取图片绝对路径时自己写的一个函数,和你的要求可能不大一样,但思路基本一致。
    看下email对应数据库的表结构,自己改下 private String getPathByUri(Context context,Uri uri)
        {
            String[] proj = { MediaStore.Images.Media.DATA };   
            
            ContentResolver resolver = context.getContentResolver();
            Cursor actualimagecursor = resolver.query(uri,proj,null,null,null); 
            
            int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);   
            actualimagecursor.moveToFirst(); 
            String path = actualimagecursor.getString(actual_image_column_index);   
            Log.e(TAG,"path="+path);
            return path;
        }
      

  3.   

    email中的附件对应的系统中有表吗?
      

  4.   


    emial中的附件在手机上应该没有绝对路径吧?
      

  5.   

    检查/data/data下email的相应目录就知道啦,只有两种可能:1. 用数据库大数量字段来保持附件的内容
    2. 附件内容以文件的形式直接存在,数据库用相应字段来保持附件的绝对路径