从Android中的应用程序读取电子邮件附件文件时找不到文件异常

时间:2014-05-21 03:59:05

标签: android email-attachments filenotfoundexception

您好我正在尝试从我的应用中阅读电子邮件附件。

当我点击电子邮件附件时,它会打开我的应用程序,并且我正在尝试使用以下代码阅读该文件的内容

Intent CallingIntent = getIntent();
Uri data = CallingIntent.getData();     
final String scheme = data.getScheme();

if(ContentResolver.SCHEME_CONTENT.equals(scheme)) 
{    
    ContentResolver cr = getApplicationContext().getContentResolver();
    InputStream is;
    try 
    {
        is = cr.openInputStream(data);
        if(is == null)
        {
            return;
        }

        StringBuffer buf = new StringBuffer();          
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        String str;
        if (is!=null) 
        {                           
            while ((str = reader.readLine()) != null) 
            {   
                buf.append(str);
            }               
        }       
        is.close();
        Toast.makeText(getApplicationContext(), buf, Toast.LENGTH_SHORT).show();                    
    }
    catch (FileNotFoundException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       
    catch (IOException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 }

当尝试使用语句is = cr.openInputStream(data);打开文件时,它给了我一个例外FileNotFoundException

可以建议我如何在我的应用程序中完成此操作我能够在不下载的情况下阅读附件的内容。

1 个答案:

答案 0 :(得分:-1)

您需要从此URI中提取文件的实际路径。此功能将返回路径。

// replace this
is = cr.openInputStream(data)


//with
is = cr.openInputStream(getPath(data))


public static String getPath(Uri uri) {

    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = BigNoteActivity.instance.getContentResolver().query(
            uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}