我們的應用程序有大量的C++代碼,可以創建自己的日誌文件作爲簡單的.txt文件。它是一個循環緩衝區,所以它只限於我們指定的大小。它也放置在我們指定的任何目錄中。在哪裏可以在Android上創建公共可訪問的日誌文件
問題在於放置文件的位置,以便使用ADB或類似工具(無生根)訪問它。如果我們不關心可公開訪問的部分,似乎這將是找到該文件的合理位置:
packageManager.getApplicationInfo(applicationContext.getPackageName().dataDir
但是因爲我們希望能夠從一個客戶的電話拉文件後 - 試着調試,我試過把它放在這裏:
"/mnt/sdcard/Android/data"
這是有問題的幾個原因,但我不確定它們是否都是如此。 (1)硬編碼; (2)並非所有的Android設備都有外部存儲,儘管我認爲他們仍將其映射到內部存儲? (3)該位置不是特定於應用程序的,因此它不會隨應用程序一起卸載。並且(4)EXTERNAL_STORAGE的運行時權限是必需的。
android.content.Context.getExternalFilesDir()
還是有更好的選擇:
我相信1-3可以用類似解決?
但我不相信這會繞過#4,這是不幸的,因爲我不想「嚇倒」具有更多權限請求的用戶。
處理這個問題的最佳方法是什麼?
與其他許多人一樣,您對Android內存方面「內部」和「外部」的含義感到困惑。 http://stackoverflow.com/documentation/android/150/storing-files-in-internal-external-storage/17144/android-internal-and-external-storage-terminology-clarification#t=201609292007145280414 –
感謝您的鏈接!我相當肯定我現在對這個主題有了更好的理解,但根據Google的文檔,它似乎仍然需要檢查外部存儲狀態? https://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory() – Bungles
沒有什麼矛盾的。它適用於那些外部(即公用)存儲配置爲使用可移動媒體的設備 –