1.android10想要操作tf卡或者內部儲存,還是需要先使用saf獲取儲存許可權.本文需先了解saf框架和kotlin.
val sm =
getsystemservice(context.storage_service) as storagemanager
val volume = sm.storagevolumes
val size = volume.size
for (i in 1 until size)
在onactivityresult中將許可權uri儲存起來,方便後來使用.
override fun onactivityresult(requestcode: int, resultcode: int, data: intent?)
我們已經獲取到了外部儲存的根uri許可權
2.想要解壓tf卡壓縮檔案其實很簡單,首先通過tf的根uri找到我們需要的zip檔案.這裡我們的壓縮檔案是/zipfiles/res.zip
val tfpath = documentfile.fromtreeuri(this, uri.parse(uri))
var zipfiles = tfpath!!.findfile("zipfiles")
if (!zipfiles!!.exists())
val findfile = zipfiles!!.findfile("res.zip")
然後將其轉換成zipinputstream,zipinputstream.nextentry方法可以獲取壓縮包中每個壓縮檔案的實體,將其寫出到想要的位置就可以了.
val inputstream = contentresolver.openinputstream(findfile!!.uri)
val zipinputstream = zipinputstream(bufferedinputstream(inputstream!!))
var entry: zipentry
val buf = bytearray(1024)
while (null != zipinputstream.nextentry.also ) ))
outputstream!!.close()
}inputstream.close()
zipinputstream.close()
3.壓縮的方法就是解壓的你過程,先通過uri建立壓縮檔案
val tfpath: documentfile = documentfile.fromtreeuri(this, uri.parse(uri))!!
var zipfiles: documentfile = tfpath.findfile("zipfiles")!!
if (!zipfiles.exists())
"test.zip")!!
val outputstream = contentresolver.openoutputstream(createfile.uri)
val zipoutputstream = zipoutputstream(bufferedoutputstream(outputstream!!))
zip(zipoutputstream, "", zipfiles)
zipoutputstream.flush()
zipoutputstream.close()
private fun zip(zipoutputstream: zipoutputstream, zipname: string, zipfiles: documentfile)
} else != -1)
zipoutputstream.flush()
zipoutputstream.closeentry()
input.close()
}}
to be continued android監聽TF卡插拔事件 判斷
如何通過註冊廣播獲知tf插拔事件 註冊廣播 intentfilter filter new intentfilter filter.addaction intent.action media eject filter.addaction intent.action media mounted fil...
Android開發中如何獲取外接TF卡的路徑
android獲取外部sdcard的官方呼叫是 environment.getexternalstoragedirectory 但是根據不同機型,是有不同的結果的。如果手機支援tf卡擴充套件,並且本身沒有大容量儲存,比如說htc老款手機 g3之類的,那麼獲取到的是tf卡的路徑。這是對的。如果手機本身...
Android對於外接TF卡的讀寫操作(許可權獲取)
android4.4 api級別19 引入了儲存訪問框架 saf saf其中的部分功能就是通過其獲取對外置 卡的讀寫許可權,從而操作外接 卡 原文介紹連線,這裡不對其進行複製貼上,本帖直接講述如何通過documentfile在獲得saf的後,在外置sd卡中讀寫資料 android 4.4提供了複雜的...