簡體   English   中英

無法訪問Android外部存儲中的文件

[英]Can't access file in Android External Storage

我將Xamarin Forms用於照片捕獲應用程序,並使用James的Media Plugin PCL通過設備相機捕獲照片。

我意識到,每張照片都會在/storage/emulated/0/Android/data/com.myapp/files/Pictures創建一個文件

(並且我可以在Pictures文件夾中提供一個子目錄以及文件名)。 我要做的是下次我的應用啟動時刪除所有這些文件。

由於我只專注於Android版本,因此我設置了一個依賴項服務調用來本地刪除文件(我認為這很簡單),但是由於某些原因,我根本無法以編程方式或通過ADB Shell找到該文件。

當我插入設備以在Windows計算機上進行USB文件傳輸時,可以在Computer\\Moto G (4)\\Internal shared storage\\Android\\data\\com.myapp\\files\\Pictures看到要刪除的Computer\\Moto G (4)\\Internal shared storage\\Android\\data\\com.myapp\\files\\Pictures

但是我無法通過代碼或外殼程序訪問這些文件。 在代碼中,我正在通過

Forms.Context.GetExternalFilesDir(Android.OS.Environment.DirectoryPictures).AbsolutePath

這給了我道路

/storage/emulated/0/Android/data/com.myapp/files/Pictures

我認為這是我的文件應位於的路徑。 但這是空白。 無論我嘗試System.IO還是Java.IO ,目錄都為空,並且file.delete()System.IO.File.Delete(path)對我不起作用。

tldr; 是什么

Computer\Moto G (4)\Internal shared storage\Android\data\com.myapp\files\Pictures

可以從ADB Shell中列出的Android OS的實際物理路徑轉換為?

我要做的是下次我的應用啟動時刪除所有這些文件。

嘗試使用以下代碼,它對我而言效果很好:

public void DeleteFolder()
{
    var path = Forms.Context.GetExternalFilesDir(Android.OS.Environment.DirectoryPictures).AbsolutePath;

    Java.IO.File directory = new Java.IO.File(path);

    if (directory.IsDirectory)
    {
        foreach (Java.IO.File child in directory.ListFiles())
        {
            deleteRecursive(child);
        }
    }
    directory.Delete();
}

這是一個假陰性。 我正在通過Windows資源管理器查看文件,由於某種原因,即使刪除了文件,Windows仍向我顯示這些文件。 顯然,我無法通過ADB Shell或從Android File Manager中獲取這些文件的原因是因為這些文件從不存在。

Forms.Context.GetExternalFilesDir(Android.OS.Environment.DirectoryPictures).AbsolutePath

給我

/storage/emulated/0/Android/data/com.myapp/files/Pictures

這與

計算機\\ Moto G(4)\\內部共享存儲\\ Android \\ data \\ com.myapp \\ files \\ Pictures

System.IO.File.Delete(path)和新的Java.IO.File(dir,children [i])。Delete(); 方法工作正常。 只是Windows選擇繼續顯示空的“ ghost”文件。

以前曾出現過此問題,但沒有答案:以編程方式刪除的文件仍顯示在Windows資源管理器中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM