首頁 >Java >即使有權限,也無法為我的應用程式建立目錄或文件

即使有權限,也無法為我的應用程式建立目錄或文件

王林
王林轉載
2024-02-22 13:28:14394瀏覽

php小編草莓為您解答Java程式設計中常見問題:即使具有權限,也無法為應用程式建立目錄或檔案的情況。這種問題可能出現在作業系統權限設定、檔案路徑錯誤、檔案已存在等方面。透過排查檔案路徑、檢查作業系統權限、確保檔案不存在等方法,可以解決這個問題,確保程式正常運作。如果您遇到類似情況,不妨嘗試以上方法看看是否能解決您的困擾。

問題內容

我有一個幾年前製作的應用程式。最近我只是重新編譯了它,做了很少的更改,這樣我就可以更改目標 sdk 並且仍然在 play 商店中列出。

事實證明,這從根本上破壞了某些手機(包括我自己的手機)中的應用程式。在上傳之前,我在另一部手機上對其進行了測試,並且運行良好(android 版本 8.1.0)。我的手機運行的是 android 11(無法運行)。

問題似乎在於在內部儲存中建立和讀取檔案的能力,而應用程式的重點是維護單一檔案。

這是我嘗試建立目錄的函數。這只是我在創建時調用的測試函數,它不是原始應用程式的一部分:

public static void AttemptDirCreate(){
    String dirname = Environment.getExternalStorageDirectory().toString() + "/this_is_a_test";
    File dir = new File(dirname);

    System.err.println("Attempting to create directory: '" + dirname + "'");

    boolean make_result = false;
    if (!dir.exists()) {
        try {
            make_result = dir.mkdir();
        }
        catch (SecurityException se) {
            System.err.println("ERROR. Could not make dir. Reason: " + se.getMessage());
        }
    }

    if (make_result){
        System.err.println("MKDir result is true");
    }
    else {
        System.err.println("MKDir result is false");
    }

    if (dir.exists()){
        System.err.println("Dir has been created");
    }
    else {
        System.err.println("Was unable to create dir");
    }

}

問題是沒有建立目錄並且沒有拋出例外。當我進入應用程式資訊時,我看到檔案和媒體的權限。

嘗試建立目錄的路徑是:'/storage/emulated/0/this_is_a_test'

據我所知,這是正確的路徑。該應用程式在首次安裝時確實詢問了我的權限。

那為什麼它不能建立目錄呢?如何找出問題並解決它?

澄清一下,這個完全相同的功能適用於 android 8.1.0,但不適用於 android 11。不確定,截止點是什麼。

解決方法

您無法在 Android 11 裝置的外部儲存根目錄中建立檔案和目錄。

而是使用現有的公共目錄之一。

喜歡 DCIM、圖片、文件...

以上是即使有權限,也無法為我的應用程式建立目錄或文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除