android Q版本外部存储问题以及获取空间大小问题
生活随笔
收集整理的這篇文章主要介紹了
android Q版本外部存储问题以及获取空间大小问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Q版本:
1.在manifest 文件中添加權限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 讀取擴展存儲,向擴展卡讀取數據,用于讀取緩存定位數據-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
2.在application 添加
android:requestLegacyExternalStorage="true"3.在對應的activity中添加 動態獲取權限
private fun applyStoragePermission () {val permissionWrite = ContextCompat.checkSelfPermission(applicationContext, WRITE_EXTERNAL_STORAGE)val permissionRead = ContextCompat.checkSelfPermission(applicationContext, READ_EXTERNAL_STORAGE)if (permissionWrite != PackageManager.PERMISSION_GRANTED || permissionRead != PackageManager.PERMISSION_GRANTED) {//Toast.makeText(this, "正在請求權限", Toast.LENGTH_SHORT).show()//申請權限,特征碼自定義為1,可在回調時進行相關判斷ActivityCompat.requestPermissions(this@MainActivity,arrayOf(WRITE_EXTERNAL_STORAGE, READ_EXTERNAL_STORAGE),1)}}獲取存儲空間:Environment.getExternalStorageDirectory();
判斷有sd卡存儲存在或者加載
Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED
/** 得到SD可用內存 **/ @SuppressLint("NewApi") private String getSdFree(){if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ StatFs fs = new StatFs(Environment.getExternalStorageDirectory().getPath());//Android API18之前:fs.getAvailableBlocks()*fs.getBlockSize()return Formatter.formatFileSize(this, (fs.getAvailableBytes()));}return "未裝載"; }獲取手機默認內置存儲空間:
/** 得到系統可用內存 **/ @SuppressLint("NewApi") private String getMemFree(){StatFs fs = new StatFs(Environment.getDataDirectory().getPath());return Formatter.formatFileSize(this, (fs.getAvailableBytes())); }?
總結
以上是生活随笔為你收集整理的android Q版本外部存储问题以及获取空间大小问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 360 P2 无线路由器宽带加速(多拨)
- 下一篇: 咖啡馆品牌形象宣传文案29句