2011-09-09 8 views
1

gmailアプリケーションからコンテンツのファイルパスを取得する必要があります。Gmailコンテンツプロバイダからコンテンツを取得する方法

content://gmail-ls/messages/mymailid%40gmail.com/4/attachments/0.1/BEST/false 

私は内容を問い合わせてみましたが、私は2つだけの列タイトルとサイズを取得: は、私は次のようにコンテンツのURIを取得します。私はファイルパスを取得したい。

これについては助けてください。

答えて

6

添付ファイルがGoogleサーバーに保存されているため、ファイルパスを直接取得することはできないと思います。ただし、ContentResolverとInputStreamを使用してファイルデータにアクセスし、添付ファイルのデータをストレージにコピーすることはできます。 CarvingCode blogに触発

、私はこのスニペットを使用します。

if (intent.getScheme().compareTo("content")==0) 
{ 
    try 
    { 
     InputStream attachment = getContentResolver().openInputStream(data); 
     if (attachment == null) 
      Log.e("onCreate", "cannot access mail attachment"); 
     else 
     { 
      FileOutputStream tmp = new FileOutputStream("/mnt/sdcard/attachment.pdf"); 
      byte []buffer = new byte[1024]; 
      while (attachment.read(buffer) > 0) 
       tmp.write(buffer); 

      tmp.close(); 
      attachment.close(); 
     } 
    } 
    catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
}