簡體   English   中英

Android-WRITE_EXTERNAL_STORAGE權限並編寫應用日志

[英]Android - WRITE_EXTERNAL_STORAGE permission and writing app's log

我想要的是能夠在非常特定的文件夾(與我的應用相關)中為我的應用編寫日志/異常報告,以便了解失敗和異常,所以這是我正在使用的代碼:

File logFile = new File(Environment.getExternalStorageDirectory() + File.separator + "/appname/log.txt");
if (!logFile.exists()) {
    try {
        if (logFile.getParentFile().mkdir()) {
            if (!logFile.createNewFile())
                showPopup(context.getString(R.string.app_name), "error creating log file");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
try {
    BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true));
    buf.append(text);
    buf.newLine();
    buf.flush();
    buf.close();
} catch (IOException e) {
    e.printStackTrace();
}

為了使以上功能起作用,我必須添加以下權限:android.permission.WRITE_EXTERNAL_STORAGE,但是當用戶讀取它時,它說讀取和寫入外部存儲都可以理解,這嚇scar了用戶。 有沒有更好的方法來記錄我的應用程序的行為並為此使用不太可怕的權限?

首先,從:

File logFile = new File(Environment.getExternalStorageDirectory() + File.separator + "/appname/log.txt");

至:

File logFile = new File(context.getExternalFilesDir(), "log.txt");

這不僅避免了在創建路徑時進行手動字符串連接,而且還不僅停止了使用特定於應用程序的隨機目錄來混亂用戶的外部存儲,而且現在意味着您可以:

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

消除API級別19+上的WRITE_EXTERNAL_STORAGE

除此之外,請嘗試將targetSdkVersion提高到4或更高。 在文檔中引用READ_EXTERNAL_STORAGE

注意:如果您的minSdkVersion和targetSdkVersion值均設置為3或更低,則系統會隱式授予您的應用此權限。 如果不需要此權限,請確保您的targetSdkVersion為4或更高。

嘗試這個:

File storageDir = new File(Environment.getExternalStorageDirectory(), "your folder name");
storageDir.mkdir();

將此代碼放入清單文件中:

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

暫無
暫無

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

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