用Delphi 10.3寫了個安卓APP,需要進行檔案讀寫操作,即將存盤卡上的文本檔案讀到memo里,修改過后在原目錄保存為另一個檔案;當檔案在內置存盤卡時,讀取和寫入(用的是Memo.Lines.SaveToFile(FilePath) )沒有任何問題,但是當檔案是在外置存盤卡時,讀取沒有問題,寫入的時候會提示“cannot create file “/xxxx(外置SD卡路徑)/檔案名”permission denied”
考慮到是權限問題,于是在工程檔案里勾選了讀寫外部儲存的權限,并且在程式運行時讓用戶點了確認,在安卓系統設定里面可以程式已經獲取了儲存權限,但仍舊出現上面的提示,難道是只有讀,寫兩項權限不夠嗎,還是其他什么原因呢?求大神解答,謝謝!
uj5u.com熱心網友回復:
權限串列里只選了Read External Storage和Write External Storage,獲取權限時的的名稱為TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE;
TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE;
這個不是外置記憶體卡嗎?如果在啟動授權時選擇了拒絕,會發現連內置存盤都讀取不了,是什么原因呢?
uj5u.com熱心網友回復:
自己頂一下吧,看來這個東西真的很難?uj5u.com熱心網友回復:
試試TPath的getDocumentPath或getSharedDocumentPat目錄h,寫入這個。uj5u.com熱心網友回復:
Linux自己創建的目錄,需要chmod命令來設定權限,安卓的目錄可能跟這有關。uj5u.com熱心網友回復:
感謝樓上回答。我用你說的TPath方法獲取到的是程式自身目錄和一個documents檔案夾,它們都在內置儲存卡里,不在外部儲存。我想實作的是對整個外置記憶體卡的讀寫權限,類似于檔案管理器的功能。至于你說的chmod,可以實作某個程式對檔案的訪問權限嗎?在安卓下,用Delphi如何實作呢?uj5u.com熱心網友回復:
你百度一下“linux檔案目錄權限”,以及root用戶權限,其它我就不懂了。uj5u.com熱心網友回復:
我也找了幾天,發現DELPHI自身的目錄類TPath是沒有取外置記憶體卡的函式的,我重復測驗了它的所有函式,發現取不到,這真是蛋疼。uj5u.com熱心網友回復:
讀取是沒有問題的,只要路徑正確。主要問題是只能讀,不能寫,不知道怎么取得權限uj5u.com熱心網友回復:
找到了JAVA的方法,想過把JAVA類轉成Delphi的pas但是失敗了,轉換過來的東西都編譯不了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24125.html
上一篇:delphi Dspack 解析度 USB攝像頭 保存
下一篇:求大神看看這是怎么回事?
