2013-02-01 41 views
3

我正嘗試以編程方式發送附件和我的電子郵件。附件是我的db文件。我能完成它時DB文件在SD card.However當它是內部則不斷抱怨找不到文件發送附件不適用於內部存儲文件

這裏是我的代碼:

String path = "/data/data/MyPackageName/databases/mydb.db" 
    Intent email = new Intent(android.content.Intent.ACTION_SEND); 

    email.setType("plain/text"); 
    email.putExtra(android.content.Intent.EXTRA_SUBJECT, title); 
    email.putExtra(android.content.Intent.EXTRA_TEXT, "Hiii"); 

    email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + path)); 

任何想法爲什麼它在這條道路上不起作用?我是否錯過了某些東西,或者附件是否僅適用於外部存儲上的文件?

回答

4

這是正確的行爲。該文件位於應用程序的專用存儲器中,不能被任何其他進程訪問。您需要首先將其複製到外部存儲器,或者實施內容提供程序以傳遞文件描述符。

請參閱this project瞭解如何爲文件實現ContentProvider的絕佳示例。

+0

非常感謝你的美好回答 – Snake

+0

很高興我能幫上忙。 – 323go

+0

@DeepakSamuelRajan,它適合我。 Github可能會有點慢。 – 323go