2013-07-19 109 views
5

我按照android文檔的建議在內部存儲上創建文件。爲了準確,該文件在內部存儲器的特定目錄下創建。我使用模式world_readable模式執行此操作。然後,我嘗試使用電子郵件程序附加文件。我能夠得到附加的文件,但發送電子郵件失敗(似乎不是加載文件)我相信這是內部存儲/許可thingy。從內部存儲發送帶附件的電子郵件

任何人都知道如何解決它或一個工作的例子?它會吸收轉換外部存儲上的所有東西。

謝謝

PS:我查了其他線程,他們似乎並不具有解決方案(老線)

+0

http:// stackoverflow。com/questions/587917 /試圖附加一個文件從SD卡到電子郵件 – KOTIOS

+0

你能看到電子郵件上的文件? – user1140237

+0

@ Stacks28。問題是我正在從內部存儲開始。 SD不會幫我 – Snake

回答

4

我假設你正試圖將發送文件作爲電子郵件附件 使用意圖。

之所以文件是空的是,電子郵件應用程序沒有 訪問在/數據/數據/程序包/ myfile_name文件,由於 機器人會安全模型(/數據/數據/程序包目錄 私有您的應用程序)。

爲了添加文件作爲附件,您需要將它寫入 公共存儲(如SD卡),以便電子郵件應用程序可以訪問它。

+0

因此,即使我已將模式設置爲世界可讀 – Snake

+0

nope buddy,我無法從內部存儲器執行此操作。 – KOTIOS

+0

@Snake您也可以使用內部存儲器,通過使用Provider。閱讀給定的答案在這裏http://stackoverflow.com/questions/13482310/how-to-share-internal-storage-file-with-gmail-client –

0

我有這個解決方案後4天,請注意以下幾點,同時給予路徑,文件類的Android(Java):

1)使用內部存儲字符串路徑path =「/存儲/ sdcard0/myfile.txt的「; 2)path =「/ storage/sdcard1/myfile.txt」; 3)在Manifest文件中提及權限。

4)首先檢查文件長度以確認。 5)在ES文件資源管理器中檢查有關sdcard0的路徑& sdcard1是否相同,否則......

例如, 在android手機存儲也是外部存儲

File file = new File(path); long = file.length(); // in Bytes

6

通過授予臨時權限來讀取該文件作爲共享的一部分,可以將應用程序本地存儲中的文件共享到其他應用程序(例如電子郵件附件)意圖。

第1步:文件提供添加到您的AndroidManifest.xml:

<applicaton> 
    .... 
    <provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="com.your.package.name.fileprovider" 
     android:grantUriPermissions="true" 
     android:exported="false"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/filepaths" /> 
    </provider> 
</application> 

步驟2:用路徑添加文件RES/XML/filepaths.xml到要在本地應用程序存儲區的文件分享到:

<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <files-path name="myFolder" path="Folder/"/> 
</paths> 

第3步:在Java代碼中創建文件共享意圖:

​​

若y如果您有任何問題,請參閱此處的文檔 https://developer.android.com/training/secure-file-sharing/share-file.html瞭解更多詳情。