Commit 30e61018 authored by wanglei's avatar wanglei

...whatsapp

parent de9bf7bd
......@@ -29,76 +29,99 @@ class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
private val TAG = "WhatsAppCleanerActivity"
private lateinit var adapter: WhatsAppCleanerAdapter
private val whatsAppMediaDir = "${Environment.getExternalStorageDirectory()}/Android/media/com.whatsapp/WhatsApp/Media/"
override val binding: ActivityWhatsAppCleanerBinding by lazy {
ActivityWhatsAppCleanerBinding.inflate(layoutInflater)
}
override fun initView() {
setupStatusBar()
setupAdapter()
checkAndRequestPermissions()
showNativeAd()
}
private fun setupStatusBar() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
}
adapter = WhatsAppCleanerAdapter {
startActivity(
Intent(
this,
WhatsAppMessageCleanActivity::class.java
).apply {
putExtra("PathList", Gson().toJson(it.subFile.toTypedArray()))
putExtra("Tittle", it.tittle)
})
finish()
private fun setupAdapter() {
adapter = WhatsAppCleanerAdapter { item ->
navigateToWhatsAppMessageCleanActivity(item)
}
binding.rv.adapter = adapter
}
private fun checkAndRequestPermissions() {
if (checkStorePermission()) {
initData()
} else {
showGerPermission(null, deny = {
finishToMain()
}, allow = {
requestStorePermission(
launcher,
result = { flag ->
if (flag) {
initData()
} else {
finishToMain()
}
},
)
})
requestStoragePermissionWithDialog()
}
}
private fun requestStoragePermissionWithDialog() {
showGerPermission(null, deny = {
finishToMain()
}, allow = {
requestStorePermission(
launcher,
result = { flag ->
if (flag) {
initData()
} else {
finishToMain()
}
}
)
})
}
private fun navigateToWhatsAppMessageCleanActivity(item: WhatsAppCleanerBean) {
val intent = Intent(this, WhatsAppMessageCleanActivity::class.java).apply {
putExtra("PathList", Gson().toJson(item.subFile.toTypedArray()))
putExtra("Tittle", item.tittle)
}
startActivity(intent)
finish()
}
private fun showNativeAd() {
AdmobMaxHelper.admobMaxShowNativeAd(this, binding.flAd, 0)
}
override fun initListener() {
setupBackButton()
}
private fun setupBackButton() {
binding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
onBackPressedDispatcher.addCallback {
AdmobMaxHelper.admobMaxShowInterstitialAd(this@WhatsAppCleanerActivity) {
finishToMain()
}
}
binding.tvTvGotIt.setOnClickListener {
showInterstitialAdAndFinish()
}
}
private fun showInterstitialAdAndFinish() {
AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
finishToMain()
}
}
private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val whatsAppRoot = File(Environment.getExternalStorageDirectory(), "Android/media/com.whatsapp/WhatsApp/Media/")
LogEx.logDebug(TAG, whatsAppRoot.absolutePath)
val list = arrayListOf<WhatsAppCleanerBean>()
list.add(WhatsAppCleanerBean(R.mipmap.videomessages, "Video Messages"))
list.add(WhatsAppCleanerBean(R.mipmap.imagemessages, "Image Messages"))
list.add(WhatsAppCleanerBean(R.mipmap.audiomessages, "Audio Messages"))
var totalSize = 0L
whatsAppRoot.listFiles()?.forEach { file ->
File(whatsAppMediaDir).listFiles()?.forEach { file ->
if (file.name == "WhatsApp Video") {
LogEx.logDebug(TAG, "whatsapp file=${file.absolutePath}")
......@@ -131,10 +154,14 @@ class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
}
launch(Dispatchers.Main) {
adapter.setData(list)
val split = totalSize.toFormatSize().split(" ")
binding.tvSize.text = split[0]
binding.tvUnit.text = split[1]
updateTotalSizeUI(list)
}
}
private fun updateTotalSizeUI(list: List<WhatsAppCleanerBean>) {
val totalSize = list.sumOf { it.size }
val formattedSize = totalSize.toFormatSize()
binding.tvSize.text = formattedSize.split(" ")[0]
binding.tvUnit.text = formattedSize.split(" ")[1]
}
}
\ No newline at end of file
......@@ -15,6 +15,10 @@ import kotlin.random.Random
class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAnimationBinding>() {
private val animationPath = "junk_scan/data.json"
private val imagesPath = "junk_scan/images/"
private val nextActivityClass = WhatsAppCleanerActivity::class.java
override val binding: ActivityWhatsAppCleanerAnimationBinding by lazy {
ActivityWhatsAppCleanerAnimationBinding.inflate(layoutInflater)
}
......@@ -31,24 +35,30 @@ class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAni
@SuppressLint("SetTextI18n")
private fun playLottie() {
binding.lottie.imageAssetsFolder = "junk_scan/images/"
binding.lottie.setAnimation("junk_scan/data.json")
binding.lottie.imageAssetsFolder = imagesPath
binding.lottie.setAnimation(animationPath)
binding.lottie.playAnimation()
lifecycleScope.launch {
delay(Random.nextLong(3500, 4500))
binding.lottie.cancelAnimation()
binding.lottie.visibility = View.GONE
binding.lottieCompleted.visibility = View.VISIBLE
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
AdmobMaxHelper.admobMaxShowInterstitialAd(this@WhatsAppCleanerAnimationActivity) {
startActivity(Intent(this@WhatsAppCleanerAnimationActivity, WhatsAppCleanerActivity::class.java))
finish()
}
showCompletionAnimation()
}
}
@SuppressLint("SetTextI18n")
private suspend fun showCompletionAnimation() {
binding.lottieCompleted.visibility = View.VISIBLE
binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!"
delay(1000)
showAdAndNavigateToNextActivity()
}
private fun showAdAndNavigateToNextActivity() {
AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
startActivity(Intent(this, nextActivityClass))
finish()
}
}
}
\ No newline at end of file
......@@ -7,9 +7,7 @@ import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity
import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
import com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerActivity
import com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerAnimationActivity
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_AUDIOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS
......
<resources>
<string name="app_name">Photo/Video Recovery</string>
<string name="app_name">Dumpster:Photo &amp; File Recovery</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="facebook_app_id">1141667540450666</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment