簡體   English   中英

File.mkdirs() 是否需要 WRITE_EXTERNAL_STORAGE 權限

[英]Does File.mkdirs() need WRITE_EXTERNAL_STORAGE permission

下面的代碼是否需要 WRITE_EXTERNAL_STORAGE 權限? 我的意思是 file.mkdirs(); 需要 WRITE_EXTERNAL_STORAGE 來寫入文件

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss", Locale.ENGLISH);
    filename = sdf.format(new Date());

    try {
        String path = ctx.getApplicationContext().getFilesDir().getPath();
        OutputStream fOut = null;
        File file = new File(path, "thinkly");
        if (!file.exists()) {
            file.mkdirs();
        }

        File file2 = new File(file, filename + ".jpg");
        fOut = new FileOutputStream(file2);

        capturedBitmap.compress(Bitmap.CompressFormat.JPEG, 90, fOut);
        fOut.flush();
        fOut.close();

        return file2.getAbsolutePath();

    } catch (Exception e) {
        e.printStackTrace();
        return "";
    }

所有 Android 器件都有兩個文件存儲選項:內部存儲和外部存儲。

內部存儲器:

  • 保存在此處的文件只能由您的應用訪問。
  • 當用戶卸載您的應用程序時,系統會從內部存儲中刪除您應用程序的所有文件。

外置儲存:

  • 它是世界可讀的,因此保存在此處的文件可能會在您的控制之外被讀取。
  • 當用戶卸載您的應用程序時,只有當您將應用程序的文件保存在 getExternalFilesDir() 的目錄中時,系統才會從此處刪除它們。

這些是 Android 中常見的文件訪問功能,因此您可以知道哪些需要權限,哪些不需要:

  • getFilesDir() - 不需要權限
  • getCacheDir() - 不需要權限
  • getExternalFilesDirs() - 需要權限
  • Environment.getExternalStorageDirectory() - 需要權限

綜上所述

在您的代碼中,您使用 getFilesDir() 方法 - 因此您無需請求許可。

引出:

外部存儲權限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

是的,即使您正在創建新目錄,也需要在清單中授予權限

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

讓我知道這是否對您有幫助:)

暫無
暫無

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

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