2011-05-08 17 views
1

我試圖通過使用Titanium Mobile的電話的電子郵件客戶端作爲附件發送文件。我遇到了發送附件的問題,但是收到的是一個0字節的文件。在Titanium Mobile中從applicationDataDirectory更改文件的權限

的問題是,在data/data/package/app_appdata創建的文件是-rw------

從Android的SDK一瞧,這是由設計。應用程序的「專用存儲」只能由該文件夾的所有者(即正在運行的應用程序)讀取。 我認爲Android電子郵件客戶端可以看到該文件,但無法讀取它。

完整的Android SDK提到了一個MODE_WORLD_WRITABLE,它允許您繼續使用applicationDataDirectory併爲所有應用程序授予讀/寫該文件的權限。 Titanium Mobile中是否有等同物?

另一種解決方案是創建一個臨時文件,它不幸使用了Titanium自己的命名方案(tiXXXXX.txt),或者我可以寫入「外部存儲」,因爲它是公開的(但可能並不總是可用,但是。)

這是我使用來獲取當前文件的調用,它可以我的應用程序只是罰款的範圍內讀取,但是當我用addAttachment調用一個emailDialog它簡單地發送一個0字節的文件給我。

var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, "generated_filename.txt") 

回答

1

您是否嘗試過使用tempDirectory代替。我當然假設一旦文件通過電子郵件發送,您不需要保留它,因爲applicationDataDirectory已完全備份,並且通常用於存儲應用程序保留的數據。

http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.Filesystem.tempDirectory-property.html

+0

我曾嘗試,它返回在打印時使用Ti.API.info()一個可愛的「未定義」,並在該應用中它拋出IOException說明該目錄(大概./undefined)是隻讀。 有趣的是,Kitchen Sink應用程序還通過將它打印到API.info來演示tempDirectory,並且這也返回undefined。我認爲它已被棄用,並且API文檔尚未反映這一點......類似於createFile()仍然在API文檔中,但不再作爲函數存在。 – Robbie 2011-05-09 17:13:24

+0

我在1.6。*和更低版本中爲'tempDirectory'獲取'undefined',但在1.7 beta中,我得到了一個可用的'tempDirectory'。我很久以前就已經看到KS內置的功能,所以它可能就是其中之一。目前我遠離我的設備,但我會嘗試在1.7版設備上提醒「tempDirectory」,然後回覆您。 – bh88 2011-05-09 17:44:14

+0

啊,看起來'tempDirectory'不是Android兼容的,因此'undefined' – bh88 2011-05-09 18:01:13