add cleanCache api
This commit is contained in:
parent
749188bb82
commit
5ddd31fed9
@ -10,6 +10,7 @@ import io.flutter.plugin.common.MethodChannel.Result
|
|||||||
import io.flutter.plugin.common.PluginRegistry.Registrar
|
import io.flutter.plugin.common.PluginRegistry.Registrar
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
|
import java.io.File
|
||||||
import android.provider.MediaStore
|
import android.provider.MediaStore
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
@ -140,6 +141,10 @@ class PhotoGalleryPlugin : FlutterPlugin, MethodCallHandler {
|
|||||||
result.success(v)
|
result.success(v)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
"cleanCache" -> {
|
||||||
|
cleanCache()
|
||||||
|
result.success(null)
|
||||||
|
}
|
||||||
else -> result.notImplemented()
|
else -> result.notImplemented()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -638,6 +643,21 @@ class PhotoGalleryPlugin : FlutterPlugin, MethodCallHandler {
|
|||||||
"modifiedDate" to dateModified
|
"modifiedDate" to dateModified
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getCachePath(): File? {
|
||||||
|
return this.context?.run {
|
||||||
|
val cachePath = File(this.cacheDir, "photo_gallery")
|
||||||
|
if (!cachePath.exists()) {
|
||||||
|
cachePath.mkdirs()
|
||||||
|
}
|
||||||
|
return@run cachePath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun cleanCache() {
|
||||||
|
val cachePath = getCachePath()
|
||||||
|
cachePath?.deleteRecursively()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class BackgroundAsyncTask<T>(val handler: () -> T, val post: (result: T) -> Unit) : AsyncTask<Void, Void, T>() {
|
class BackgroundAsyncTask<T>(val handler: () -> T, val post: (result: T) -> Unit) : AsyncTask<Void, Void, T>() {
|
||||||
|
@ -75,6 +75,10 @@ public class SwiftPhotoGalleryPlugin: NSObject, FlutterPlugin {
|
|||||||
result(filepath?.replacingOccurrences(of: "file://", with: ""))
|
result(filepath?.replacingOccurrences(of: "file://", with: ""))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
else if(call.method == "cleanCache") {
|
||||||
|
cleanCache()
|
||||||
|
result(nil)
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
result(FlutterMethodNotImplemented)
|
result(FlutterMethodNotImplemented)
|
||||||
}
|
}
|
||||||
@ -387,11 +391,8 @@ public class SwiftPhotoGalleryPlugin: NSObject, FlutterPlugin {
|
|||||||
let mediumId = asset.localIdentifier
|
let mediumId = asset.localIdentifier
|
||||||
.replacingOccurrences(of: "/", with: "__")
|
.replacingOccurrences(of: "/", with: "__")
|
||||||
.replacingOccurrences(of: "\\", with: "__")
|
.replacingOccurrences(of: "\\", with: "__")
|
||||||
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
|
let cachePath = self.cachePath()
|
||||||
let tempFolder = paths[0].appendingPathComponent("photo_gallery")
|
return cachePath.appendingPathComponent(mediumId + ext)
|
||||||
try! FileManager.default.createDirectory(at: tempFolder, withIntermediateDirectories: true, attributes: nil)
|
|
||||||
|
|
||||||
return tempFolder.appendingPathComponent(mediumId+ext)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func toSwiftMediumType(value: String) -> PHAssetMediaType? {
|
private func toSwiftMediumType(value: String) -> PHAssetMediaType? {
|
||||||
@ -448,4 +449,15 @@ public class SwiftPhotoGalleryPlugin: NSObject, FlutterPlugin {
|
|||||||
let uti = self.extractUTIFromAsset(asset: asset)
|
let uti = self.extractUTIFromAsset(asset: asset)
|
||||||
return self.extractFileExtensionFromUTI(uti: uti)
|
return self.extractFileExtensionFromUTI(uti: uti)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func cachePath() -> URL {
|
||||||
|
let paths = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)
|
||||||
|
let cacheFolder = paths[0].appendingPathComponent("photo_gallery")
|
||||||
|
try! FileManager.default.createDirectory(at: cacheFolder, withIntermediateDirectories: true, attributes: nil)
|
||||||
|
return cacheFolder
|
||||||
|
}
|
||||||
|
|
||||||
|
private func cleanCache() {
|
||||||
|
try? FileManager.default.removeItem(at: self.cachePath())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,4 +113,8 @@ class PhotoGallery {
|
|||||||
}) as String;
|
}) as String;
|
||||||
return File(path);
|
return File(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<void> cleanCache() async {
|
||||||
|
_channel.invokeMethod('cleanCache', {});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user