Commit a4d0efe0 authored by guest's avatar guest

删除app管理功能

parent 02983f02
......@@ -63,13 +63,13 @@
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.appmanager.AppManagerActivity"
android:name=".activity.videomanager.ManagerActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.appmanager.AppManagerAnimationActivity"
android:name=".activity.videomanager.VideoCleanAnimationActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
......@@ -86,18 +86,6 @@
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<!-- <activity-->
<!-- android:name=".activity.appprocess.AppProcessAnimationActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<!-- <activity-->
<!-- android:name=".activity.appprocess.AppProcessActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<activity
android:name=".activity.photomanager.PhotoManagerActivity"
android:exported="false"
......@@ -183,24 +171,6 @@
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<!-- <activity-->
<!-- android:name=".activity.whatsapp.WhatsAppCleanerAnimationActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<!-- <activity-->
<!-- android:name=".activity.whatsapp.WhatsAppCleanerActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<!-- <activity-->
<!-- android:name=".activity.whatsapp.WhatsAppMessageCleanActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<activity
android:name=".activity.privacyspace.PrivacyPinTwoActivity"
android:exported="false"
......
......@@ -5,7 +5,6 @@ import android.content.Intent
import android.graphics.Color
import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding
import com.base.datarecovery.activity.appmanager.AppManagerAnimationActivity
import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity
import com.base.datarecovery.activity.junkclean.ScanJunkActivity
import com.base.datarecovery.activity.largefile.LargeFileAnimationActivity
......@@ -14,9 +13,9 @@ import com.base.datarecovery.activity.privacyspace.PrivacySpaceActivity
import com.base.datarecovery.activity.recovery.FileScanResultActivity
import com.base.datarecovery.activity.repeat.RepeatAnimationActivity
import com.base.datarecovery.activity.screenshot.ScreenShotAnimationActivity
import com.base.datarecovery.activity.videomanager.VideoCleanAnimationActivity
import com.base.datarecovery.adapter.AppFunctionAdapter
import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.ConstObject.APP_MANAGER
import com.base.datarecovery.bean.ConstObject.BATTERY_INFO
import com.base.datarecovery.bean.ConstObject.JUNK_CLEANER
import com.base.datarecovery.bean.ConstObject.LARGE_FILE
......@@ -31,6 +30,7 @@ import com.base.datarecovery.bean.ConstObject.SCAN_DOCUMENTS
import com.base.datarecovery.bean.ConstObject.SCAN_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCAN_VIDEOS
import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER
import com.base.datarecovery.bean.ConstObject.VIDEO_CLEAN
import com.base.datarecovery.bean.ConstObject.privacyPinPassword
import com.base.datarecovery.databinding.ActivityLayoutResultBinding
import com.base.datarecovery.help.BaseActivity
......@@ -112,8 +112,8 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
// startActivity(Intent(this, AppProcessAnimationActivity::class.java))
// }
APP_MANAGER -> {
startActivity(Intent(this, AppManagerAnimationActivity::class.java))
VIDEO_CLEAN -> {
startActivity(Intent(this, VideoCleanAnimationActivity::class.java))
}
BATTERY_INFO -> {
......
package com.base.datarecovery.activity.appmanager
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
import android.graphics.Color
import android.net.Uri
import android.view.View
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope
import com.base.datarecovery.adapter.AppManagerAdapter
import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.AppBean
import com.base.datarecovery.databinding.ActivityAppManagerBinding
import com.base.datarecovery.help.BaseActivity
import com.base.datarecovery.utils.BarUtils
import com.base.datarecovery.utils.RamUtils.ramPair
import com.base.datarecovery.view.DialogViews.showExitFunctionDialog
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
var uninstallTimes = 0
override val binding: ActivityAppManagerBinding by lazy {
ActivityAppManagerBinding.inflate(layoutInflater)
}
private lateinit var adapter: AppManagerAdapter
private var ePercent = 0
@SuppressLint("SetTextI18n")
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
val ramPair = ramPair()
val percent = ((ramPair.first.toFloat() / ramPair.second.toFloat()) * 100).toInt()
ePercent = percent
adapter = AppManagerAdapter(true) { pkg ->
if (uninstallTimes % 3 == 0 && uninstallTimes > 0) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this,false) { unInstall(pkg) }
} else {
unInstall(pkg)
}
}
binding.rv.adapter = adapter
initData()
}
private fun unInstall(pkg: String) {
val intent = Intent(Intent.ACTION_DELETE, Uri.parse("package:${pkg}"))
launcher.launch(intent) {
if (!isInstalled(this, pkg)) {
adapter.removeBean(pkg)
uninstallTimes++
}
}
}
private fun isInstalled(context: Context, pkg: String, error: (() -> Unit)? = null): Boolean {
return try {
context.packageManager.getPackageInfo(pkg, 0)
true
} catch (e: Exception) {
error?.invoke()
false
}
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
showExitFunctionDialog{showAd ->
if (showAd){
AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppManagerActivity, isLoading = false) {
finishToMain()
}
}else{
finishToMain()
}
}
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
@SuppressLint("QueryPermissionsNeeded")
private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val pm = packageManager
val packages = pm.getInstalledPackages(0)
val list = arrayListOf<AppBean>()
packages.forEach { app ->
if (isLaunchApp(this@AppManagerActivity, app)) {
val appBean = AppBean(
app.applicationInfo.loadIcon(pm),
app.applicationInfo.loadLabel(pm).toString(),
app.applicationInfo.packageName
)
list.add(appBean)
}
}
launch(Dispatchers.Main) {
binding.pbLoading.visibility = View.GONE
adapter.setData(list)
}
}
private fun isLaunchApp(context: Context, app: PackageInfo, filterSystem: Boolean = true): Boolean {
val flagSystem = (app.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) < 1
val flag = if (filterSystem) flagSystem else true
return flag && app.applicationInfo.packageName != context.packageName
}
}
\ No newline at end of file
//package com.base.datarecovery.activity.appprocess
//
//import android.annotation.SuppressLint
//import android.content.Context
//import android.content.Intent
//import android.content.pm.ApplicationInfo
//import android.content.pm.PackageInfo
//import android.graphics.Color
//import android.net.Uri
//import android.provider.Settings
//import android.view.View
//import androidx.activity.addCallback
//import androidx.core.view.updatePadding
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.adapter.AppManagerAdapter
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.ads.AdmobMaxHelper.showBackInterAdSp
//import com.base.datarecovery.bean.AppBean
//import com.base.datarecovery.databinding.ActivityAppProcessBinding
//import com.base.datarecovery.help.BaseActivity
//import com.base.datarecovery.help.KotlinExt.toFormatSize
//import com.base.datarecovery.utils.BarUtils
//import com.base.datarecovery.utils.RamUtils.ramPair
//import com.base.datarecovery.view.DialogViews.showAppProcessExitDialog
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//
//
//class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
//
// override val binding: ActivityAppProcessBinding by lazy {
// ActivityAppProcessBinding.inflate(layoutInflater)
// }
//
// private lateinit var adapter: AppManagerAdapter
//
// private var ePercent = 0
//
// @SuppressLint("SetTextI18n")
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// val ramPair = ramPair()
// val percent = ((ramPair.first.toFloat() / ramPair.second.toFloat()) * 100).toInt()
// ePercent = percent
// binding.tvPercent.text = percent.toString()
// binding.pbRam.progress = percent
// binding.tvSize.text = "${ramPair.first.toFormatSize()}/${ramPair.second.toFormatSize()}"
//
// adapter = AppManagerAdapter { pkg ->
// val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
// val uri = Uri.fromParts("package", pkg, null) // 替换为需要跳转的应用包名
// intent.setData(uri)
// startActivity(intent)
// }
// binding.rv.adapter = adapter
//
// initData()
// }
//
// override fun initListener() {
// super.initListener()
// onBackPressedDispatcher.addCallback {
// showAppProcessExitDialog(ePercent) {
// if (showBackInterAdSp()) {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppProcessActivity, false) {
// finishToMain()
// }
// } else {
// finishToMain()
// }
// }
// }
// binding.flFanhui.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// }
//
// @SuppressLint("QueryPermissionsNeeded")
// private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
// val pm = packageManager
// val packages = pm.getInstalledPackages(0)
// val list = arrayListOf<AppBean>()
//
// packages.forEach { app ->
// if (isLaunchApp(this@AppProcessActivity, app)) {
//
// val appBean = AppBean(
// app.applicationInfo.loadIcon(pm),
// app.applicationInfo.loadLabel(pm).toString(),
// app.applicationInfo.packageName
// )
// list.add(appBean)
// }
// }
// launch(Dispatchers.Main) {
// binding.pbLoading.visibility = View.GONE
// adapter.setData(list)
// }
// }
//
// private fun isLaunchApp(context: Context, app: PackageInfo, filterSystem: Boolean = true): Boolean {
//
// val flagSystem = (app.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) < 1
// val flag = if (filterSystem) flagSystem else true
//
// return flag && app.applicationInfo.packageName != context.packageName
// }
//
//}
\ No newline at end of file
//package com.base.datarecovery.activity.appprocess
//
//import android.annotation.SuppressLint
//import android.content.Intent
//import android.view.View
//import android.widget.Toast
//import androidx.activity.addCallback
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.databinding.ActivityAppManagerAnimationBinding
//import com.base.datarecovery.help.BaseActivity
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.Job
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//import kotlin.random.Random
//
//class AppProcessAnimationActivity : BaseActivity<ActivityAppManagerAnimationBinding>() {
//
// override val binding: ActivityAppManagerAnimationBinding by lazy {
// ActivityAppManagerAnimationBinding.inflate(layoutInflater)
// }
// private var job: Job? = null
//
// override fun initView() {
// playLottie()
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// }
//
// override fun initListener() {
// onBackPressedDispatcher.addCallback {
// Toast.makeText(this@AppProcessAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show()
// }
// }
//
// @SuppressLint("SetTextI18n")
// private fun playLottie() {
// binding.lottie.imageAssetsFolder = "app_manager/images/"
// binding.lottie.setAnimation("app_manager/data.json")
// binding.lottie.playAnimation()
// }
//
// @SuppressLint("SetTextI18n")
// private fun jumpJob() = lifecycleScope.launch(Dispatchers.Main) {
// delay(Random.nextLong(4000, 6000))
// binding.lottie.visibility = View.GONE
// binding.lottieCompleted.visibility = View.VISIBLE
// binding.lottieCompleted.playAnimation()
// binding.tv.text = "Completed!"
// delay(1000)
//
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppProcessAnimationActivity) {
// startActivity(Intent(this@AppProcessAnimationActivity, AppProcessActivity::class.java))
// finish()
// }
//
// }
//
//
// override fun onResume() {
// super.onResume()
// if (job?.isActive == false || job == null) {
// job = jumpJob()
// }
// }
//
// override fun onPause() {
// super.onPause()
// job?.cancel()
// job = null
// }
//}
\ No newline at end of file
......@@ -4,7 +4,6 @@ import android.app.Activity
import android.content.Intent
import android.util.Log
import com.base.datarecovery.activity.MainActivity
import com.base.datarecovery.activity.appmanager.AppManagerAnimationActivity
import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity
import com.base.datarecovery.activity.guide.GuideActivity
import com.base.datarecovery.activity.junkclean.ScanJunkActivity
......@@ -12,6 +11,7 @@ import com.base.datarecovery.activity.newfunction.WeatherInterface
import com.base.datarecovery.activity.newfunction.XingzuoLoadingActivity
import com.base.datarecovery.activity.photomanager.PhotoManagerAnimationActivity
import com.base.datarecovery.activity.recovery.FileScanResultActivity
import com.base.datarecovery.activity.videomanager.VideoCleanAnimationActivity
import com.base.datarecovery.bean.ConstObject
import com.base.datarecovery.bean.ConstObject.ID_APP_MANAGER
import com.base.datarecovery.bean.ConstObject.ID_BATTERY_INFO
......@@ -92,7 +92,7 @@ object StartUtils {
// }
ID_APP_MANAGER -> {
context.startActivity(Intent(context, AppManagerAnimationActivity::class.java))
context.startActivity(Intent(context, VideoCleanAnimationActivity::class.java))
}
ID_BATTERY_INFO -> {
......
......@@ -33,6 +33,7 @@ class TaskManager {
}
fun startProgress() {
binding.idLlTishi.isVisible=false
binding.idTvStart.isVisible = false
binding.llStart.visibility = View.GONE
binding.llProgress.visibility = View.VISIBLE
......
package com.base.datarecovery.activity.appmanager
package com.base.datarecovery.activity.videomanager
import android.annotation.SuppressLint
import android.content.Intent
import android.view.View
......@@ -14,7 +14,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.random.Random
class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBinding>() {
class VideoCleanAnimationActivity : BaseActivity<ActivityAppProcessAnimationBinding>() {
override val binding: ActivityAppProcessAnimationBinding by lazy {
ActivityAppProcessAnimationBinding.inflate(layoutInflater)
......@@ -28,7 +28,7 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBind
override fun initListener() {
onBackPressedDispatcher.addCallback {
Toast.makeText(this@AppManagerAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show()
Toast.makeText(this@VideoCleanAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show()
}
}
......@@ -48,8 +48,8 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBind
binding.tv.text = "Completed!"
delay(1000)
AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppManagerAnimationActivity) {
startActivity(Intent(this@AppManagerAnimationActivity, AppManagerActivity::class.java))
AdmobMaxHelper.admobMaxShowInterstitialAd(this@VideoCleanAnimationActivity) {
startActivity(Intent(this@VideoCleanAnimationActivity, ManagerActivity::class.java))
finish()
}
......
//package com.base.datarecovery.activity.whatsapp
//
//import android.content.Intent
//import android.graphics.Color
//import android.os.Environment
//import androidx.activity.addCallback
//import androidx.core.view.updatePadding
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.R
//import com.base.datarecovery.activity.ResultActivity
//import com.base.datarecovery.adapter.WhatsAppCleanerAdapter
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.bean.ConstObject.WHATSAPP_CLEANER
//import com.base.datarecovery.bean.WhatsAppCleanerBean
//import com.base.datarecovery.databinding.ActivityWhatsAppCleanerBinding
//import com.base.datarecovery.help.BaseActivity
//import com.base.datarecovery.help.FileHelp.getDirFiles
//import com.base.datarecovery.help.KotlinExt.toFormatSize
//import com.base.datarecovery.help.PermissionHelp.checkStorePermission
//import com.base.datarecovery.help.PermissionHelp.requestStorePermission
//import com.base.datarecovery.utils.BarUtils
//import com.base.datarecovery.utils.FileHexEx.isImage
//import com.base.datarecovery.utils.FileHexEx.isWhatAppVideo
//import com.base.datarecovery.utils.LogEx
//import com.base.datarecovery.view.DialogViews.showExitFunctionDialog
//import com.base.datarecovery.view.DialogViews.showGerPermission
//import com.google.gson.Gson
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//import java.io.File
//
//class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
//
// private val TAG = "WhatsAppCleanerActivity"
// private lateinit var adapter: WhatsAppCleanerAdapter
//
// override val binding: ActivityWhatsAppCleanerBinding by lazy {
// ActivityWhatsAppCleanerBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.idTop.updatePadding(top = BarUtils.getStatusBarHeight())
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// adapter = WhatsAppCleanerAdapter {
// startActivity(Intent(this, WhatsAppMessageCleanActivity::class.java).apply {
// putExtra("PathList", Gson().toJson(it.subFile.toTypedArray()))
// putExtra("Tittle", it.tittle)
// })
// // finish()
// }
// binding.rv.adapter = adapter
//
// if (checkStorePermission()) {
// initData()
// } else {
// showGerPermission(null, deny = {
// finishToMain()
// }, allow = {
// requestStorePermission(
// launcher,
// result = { flag ->
// if (flag) {
// initData()
// } else {
// finishToMain()
// }
// },
// )
// })
// }
// }
//
// override fun initListener() {
// binding.flBack.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// onBackPressedDispatcher.addCallback {
// showExitFunctionDialog { showAd ->
// if (showAd) {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@WhatsAppCleanerActivity, false) {
// finishToMain()
// }
// } else {
// finishToMain()
// }
// }
// }
// binding.tvTvGotIt.setOnClickListener {
// startActivity(Intent(this, ResultActivity::class.java).apply {
// putExtra("from", WHATSAPP_CLEANER)
// })
// finish()
// }
//
// }
//
//
// 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 ->
// if (file.name == "WhatsApp Video") {
// LogEx.logDebug(TAG, "whatsapp file=${file.absolutePath}")
// val bean = list.find { it.tittle == "Video Messages" }
// val subFile = getDirFiles(file).filter { isWhatAppVideo(it) }
// val size = subFile.sumOf { it.length() }
// bean?.size = size
// totalSize += size
// bean?.subFile = subFile.map { it.absolutePath }
//// subFile.forEach { path ->
//// LogEx.logDebug(TAG, "path=$path")
//// }
// }
// if (file.name == "WhatsApp Images") {
// val bean = list.find { it.tittle == "Image Messages" }
// val subFile = getDirFiles(file).filter { isImage(it) }
// val size = subFile.sumOf { it.length() }
// bean?.size = size
// totalSize += size
// bean?.subFile = subFile.map { it.absolutePath }
// }
// if (file.name == "WhatsApp Audio") {
// val bean = list.find { it.tittle == "Audio Messages" }
// val subFile = getDirFiles(file).filter { it.name.contains(".mp3") }
// val size = subFile.sumOf { it.length() }
// bean?.size = size
// totalSize += size
// bean?.subFile = subFile.map { it.absolutePath }
// }
// }
// launch(Dispatchers.Main) {
// adapter.setData(list)
// val split = totalSize.toFormatSize().split(" ")
// binding.tvSize.text = split[0]
// binding.tvUnit.text = split[1]
// }
// }
//
//}
\ No newline at end of file
//package com.base.datarecovery.activity.whatsapp
//
//import android.annotation.SuppressLint
//import android.content.Intent
//import android.view.View
//import android.widget.Toast
//import androidx.activity.addCallback
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.databinding.ActivityWhatsAppCleanerAnimationBinding
//import com.base.datarecovery.help.BaseActivity
//import kotlinx.coroutines.Job
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//import kotlin.random.Random
//
//class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAnimationBinding>() {
//
//
// override val binding: ActivityWhatsAppCleanerAnimationBinding by lazy {
// ActivityWhatsAppCleanerAnimationBinding.inflate(layoutInflater)
// }
//
// private var job: Job? = null
// override fun initView() {
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// playLottie()
//
// }
//
// override fun initListener() {
// onBackPressedDispatcher.addCallback {
// Toast.makeText(this@WhatsAppCleanerAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show()
// }
// }
//
// @SuppressLint("SetTextI18n")
// private fun playLottie() {
// binding.lottie.imageAssetsFolder = "junk_scan/images/"
// binding.lottie.setAnimation("junk_scan/data.json")
// binding.lottie.playAnimation()
// }
//
// @SuppressLint("SetTextI18n")
// fun jumpJob() = 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()
// }
// }
//
// override fun onResume() {
// super.onResume()
// if (job?.isActive == false || job == null) {
// job = jumpJob()
// }
// }
//
// override fun onPause() {
// super.onPause()
// job?.cancel()
// job = null
// }
//
//}
\ No newline at end of file
//package com.base.datarecovery.activity.whatsapp
//
//import android.content.Intent
//import android.graphics.Color
//import androidx.activity.addCallback
//import androidx.recyclerview.widget.GridLayoutManager
//import androidx.recyclerview.widget.LinearLayoutManager
//import com.base.datarecovery.activity.MainActivity
//import com.base.datarecovery.activity.junkclean.CleaningActivity
//import com.base.datarecovery.adapter.WhatsAppMediaAdapter
//import com.base.datarecovery.ads.admob.AdmobInterstitialUtils
//import com.base.datarecovery.ads.admob.AdmobNativeUtils
//import com.base.datarecovery.bean.ConstObject
//import com.base.datarecovery.bean.MediaBean
//import com.base.datarecovery.databinding.ActivityWhatsAppMessageCleanBinding
//import com.base.datarecovery.help.BaseActivity
//import com.base.datarecovery.help.KotlinExt.toFormatSize
//import com.base.datarecovery.utils.ActivityManagerUtils
//import com.base.datarecovery.utils.BarUtils
//import com.google.gson.Gson
//import java.io.File
//
//class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBinding>() {
//
// private val pathList by lazy {
// val json = intent.extras?.getString("PathList")
// val list = Gson().fromJson(json, Array<String>::class.java)
// list.map { MediaBean(it) }
// }
// private lateinit var adapter: WhatsAppMediaAdapter
//
// override val binding: ActivityWhatsAppMessageCleanBinding by lazy {
// ActivityWhatsAppMessageCleanBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
// val tittle = intent.extras?.getString("Tittle") ?: ""
// binding.tvTitle.text = tittle
//
// var isList = false
// when (tittle) {
// "Audio Messages" -> {
// binding.rv.layoutManager = LinearLayoutManager(this)
// isList = true
// }
//
// else -> {
// binding.rv.layoutManager = GridLayoutManager(this, 3)
// }
// }
//
// adapter = WhatsAppMediaAdapter(isList) {
// binding.llSelectAll.isSelected = it
// binding.tvClean.isEnabled = adapter.getSelectData().isNotEmpty()
// val split = adapter.getSelectDataSize().toFormatSize().split(" ")
// binding.tvSize.text = split[0]
// binding.tvUnit.text = split[1]
// }
// binding.rv.adapter = adapter
// adapter.setData(pathList)
//
// AdmobNativeUtils.showNativeAd(this, binding.flAd)
// }
//
// override fun initListener() {
// binding.flBack.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// onBackPressedDispatcher.addCallback {
// AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity) {
// finishToMain()
// }
// }
// binding.llSelectAll.setOnClickListener {
// it.isSelected = !it.isSelected
// adapter.toggleSelect(it.isSelected)
// binding.tvClean.isEnabled = it.isSelected
// val split = adapter.getSelectDataSize().toFormatSize().split(" ")
// binding.tvSize.text = split[0]
// binding.tvUnit.text = split[1]
// }
//
// binding.tvClean.setOnClickListener {
//
// AdmobInterstitialUtils.showInterstitialAd(this) {
// val list = adapter.getSelectData()
// ActivityManagerUtils.finishAll(MainActivity::class.java)
// startActivity(
// Intent(this, CleaningActivity::class.java).apply {
// putExtra("list",list.toTypedArray())
// putExtra("size", list.map { File(it) }.sumOf { it.length() })
// putExtra("type", ConstObject.WHATSAPP_CLEANER)
// }
// )
//// runCatching {
//// list.forEach { File(it).delete() }
//// }
//// startActivity(Intent(this@WhatsAppMessageCleanActivity, ResultActivity::class.java).apply {
//// putExtra("from", ConstObject.WHATSAPP_CLEANER)
//// })
//// finish()
// }
// }
// }
//
//
//}
\ No newline at end of file
......@@ -7,7 +7,6 @@ import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.datarecovery.R
import com.base.datarecovery.bean.ConstObject.APP_MANAGER
import com.base.datarecovery.bean.ConstObject.BATTERY_INFO
import com.base.datarecovery.bean.ConstObject.JUNK_CLEANER
import com.base.datarecovery.bean.ConstObject.LARGE_FILE
......@@ -18,6 +17,7 @@ import com.base.datarecovery.bean.ConstObject.RECOVERY_PHOTOS
import com.base.datarecovery.bean.ConstObject.RECOVERY_VIDEOS
import com.base.datarecovery.bean.ConstObject.REPEAT_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER
import com.base.datarecovery.bean.ConstObject.VIDEO_CLEAN
import com.base.datarecovery.databinding.ItemResultFun2Binding
import com.base.datarecovery.utils.AppPreferences
import com.base.datarecovery.view.XmlEx.inflate
......@@ -37,8 +37,10 @@ class AppFunctionAdapter(val click: (name: String) -> Unit) :
Fun(SCREENSHOT_CLEANER, R.mipmap.screenshots),
// Fun(WHATSAPP_CLEANER, R.mipmap.whatsapp),
Fun(LARGE_FILE, R.mipmap.large),
Fun(VIDEO_CLEAN, R.mipmap.r_sp),
// Fun(APP_PROCESS, R.mipmap.h_appprocess),
Fun(APP_MANAGER, R.mipmap.h_appmanager),
// Fun(APP_MANAGER, R.mipmap.h_appmanager),
Fun(BATTERY_INFO, R.mipmap.h_battery),
)
......
......@@ -31,8 +31,9 @@ object ConstObject {
// const val WHATSAPP_CLEANER = "Whatsapp Cleaner"
const val LARGE_FILE = "Large File"
// const val APP_PROCESS = "App Process"
const val APP_MANAGER = "Uninstall App"
// const val APP_MANAGER = "Uninstall App"
const val BATTERY_INFO = "Battery Info"
const val VIDEO_CLEAN = "Video Clean"
const val SCAN_PHOTOS = 1
const val SCAN_DOCUMENTS = 2
......
......@@ -2,11 +2,6 @@ package com.base.datarecovery.fragment
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.base.datarecovery.R
import com.base.datarecovery.activity.MainActivity
import com.base.datarecovery.activity.guide.GuideActivity
......@@ -14,9 +9,8 @@ import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.ConstObject.isGuide
import com.base.datarecovery.databinding.FragmentGuideBinding
import com.base.datarecovery.help.BaseFragment
import com.base.datarecovery.utils.AppPreferences
class GuideFragment constructor() : BaseFragment<FragmentGuideBinding>() {
class GuideFragment : BaseFragment<FragmentGuideBinding>() {
var page: Int = 1
......@@ -55,14 +49,15 @@ class GuideFragment constructor() : BaseFragment<FragmentGuideBinding>() {
}
private fun jumpMain() {
val showAd = AppPreferences.getInstance().getString("isShowGuideAd", "0")?.toInt()
if (showAd == 1) {
AdmobMaxHelper.admobMaxShowInterstitialAd(requireActivity(),false) {
startActivity(Intent(requireContext(), MainActivity::class.java))
requireActivity().finish()
isGuide = true
}
} else {
// val showAd = AppPreferences.getInstance().getString("isShowGuideAd", "0")?.toInt()
// if (showAd == 1) {
//
// } else {
// startActivity(Intent(requireContext(), MainActivity::class.java))
// requireActivity().finish()
// isGuide = true
// }
AdmobMaxHelper.admobMaxShowInterstitialAd(requireActivity(),false) {
startActivity(Intent(requireContext(), MainActivity::class.java))
requireActivity().finish()
isGuide = true
......
......@@ -18,7 +18,6 @@ import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.base.datarecovery.R
import com.base.datarecovery.activity.SettingActivity
import com.base.datarecovery.activity.appmanager.AppManagerAnimationActivity
import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity
import com.base.datarecovery.activity.junkclean.ScanJunk2Activity
import com.base.datarecovery.activity.junkclean.ScanJunkActivity
......@@ -28,6 +27,7 @@ import com.base.datarecovery.activity.newfunction.WeatherUtils
import com.base.datarecovery.activity.newfunction.XingzuoLoadingActivity
import com.base.datarecovery.activity.repeat.RepeatAnimationActivity
import com.base.datarecovery.activity.screenshot.ScreenShotAnimationActivity
import com.base.datarecovery.activity.videomanager.VideoCleanAnimationActivity
import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.databinding.FragmentHomeBinding
import com.base.datarecovery.help.BaseFragment
......@@ -93,8 +93,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
startActivity(Intent(requireContext(), LargeFileAnimationActivity::class.java))
}
binding.cardAppManager.setOnClickListener {
startActivity(Intent(requireContext(), AppManagerAnimationActivity::class.java))
binding.cardVideo.setOnClickListener {
startActivity(Intent(requireContext(), VideoCleanAnimationActivity::class.java))
}
// binding.cardAppProcess.setOnClickListener {
// startActivity(Intent(requireContext(), AppProcessAnimationActivity::class.java))
......
package com.base.datarecovery.help
import android.os.Environment
import android.util.Log
import android.content.Context
import android.database.Cursor
import android.media.MediaScannerConnection
import android.net.Uri
import android.provider.MediaStore
import com.base.datarecovery.bean.FileBean
import com.base.datarecovery.utils.LogEx
import com.base.datarecovery.utils.NewFileUtils.getFileExtension
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
......@@ -142,5 +147,60 @@ object FileHelp {
}
return set.toList()
}
val fileList = mutableListOf<FileBean>()
fun getFilesByType(context: Context, onEnd: (() -> Unit)? = null): List<FileBean> {
fileList.clear()
var c: Cursor? = null
try {
val mContentResolver = context.contentResolver
c = mContentResolver.query(
MediaStore.Files.getContentUri("external"),
null,
null,
null,
null
)
val columnIndexOrThrow_DATA =
c!!.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA)
val columnIndexOrThrow_SIZE = c.getColumnIndexOrThrow(MediaStore.Files.FileColumns.SIZE)
while (c.moveToNext()) {
val path = c.getString(columnIndexOrThrow_DATA)
val position_do = path.lastIndexOf(".")
if (position_do == -1) {
continue
}
val position_x = path.lastIndexOf(File.separator)
if (position_x == -1) {
continue
}
val displayName = path.substring(position_x + 1, path.length)
val size = c.getLong(columnIndexOrThrow_SIZE)
val file = File(path)
fileList.add(
FileBean(
displayName,
path,
size,
false,
getFileExtension(displayName),
file.lastModified(),
false
)
)
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
c?.close()
onEnd?.invoke()
}
return fileList
}
fun updateMediaStore(context: Context?, filePath: MutableList<String>) {
MediaScannerConnection.scanFile(
context,
filePath.toTypedArray(),
null
) { path: String?, uri: Uri? -> }
}
}
\ No newline at end of file
......@@ -44,7 +44,7 @@ object NewComUtils {
"$API_URL/${appCode}spk?pkg=$packageName&referrer=${bRefer}&vn=${BuildConfig.VERSION_NAME}&vc=${BuildConfig.VERSION_CODE}&device=${
AppPreferences.getInstance().getString("gid", "")
}&aid=${AppPreferences.getInstance().getString("uuid", "")}"
}&aid=${AppPreferences.getInstance().getString("uuid", "")}&mode=4"
// &mode=4
}
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下状态 -->
<item android:color="@color/white" android:state_enabled="true"/>
<!-- 默认状态 -->
<item android:color="#89898D"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_btn_jb" android:state_enabled="true" />
<item android:drawable="@drawable/shape_f5f8ff_r22" android:state_enabled="false" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:endColor="#36D1FF"
android:startColor="#468DFF" />
<corners android:radius="22dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F5F8FF"/>
<corners android:radius="22dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.appprocess.AppProcessActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
tools:ignore="UselessParent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/quit"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="App Process"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:includeFontPadding="false"
android:textSize="54sp"
android:textStyle="bold"
tools:text="68" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="2dp"
android:layout_marginBottom="5dp"
android:includeFontPadding="false"
android:text="%"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:text="RAM Used"
android:textSize="15sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="18dp">
<ProgressBar
android:id="@+id/pb_ram"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="345dp"
android:layout_height="25dp"
android:max="100"
android:progressDrawable="@drawable/shape_ram_pb"
tools:progress="50" />
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="20dp"
android:text="5.6GB/7.9GB"
android:textSize="12sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<FrameLayout
android:id="@+id/id_fl_native"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="12dp"
android:text="Manager user apps"
android:textColor="#999999"
android:textSize="15sp"
tools:ignore="HardcodedText" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_app_manager" />
<ProgressBar
android:id="@+id/pb_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
</LinearLayout>
\ No newline at end of file
......@@ -41,6 +41,7 @@
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toTopOf="@id/tv_btn"
app:layout_constraintTop_toBottomOf="@id/ll">
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.appprocess.AppProcessActivity">
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent">
android:layout_marginTop="14dp"
android:layout_marginBottom="14dp">
<FrameLayout
android:id="@+id/fl_fanhui"
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
tools:ignore="UselessParent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/quit"
tools:ignore="ContentDescription" />
</FrameLayout>
android:layout_gravity="center_vertical"
android:paddingHorizontal="14dp"
android:tint="@color/black"
android:src="@mipmap/fanhui" />
<TextView
android:id="@+id/id_tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Uninstall App"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
android:text="Video"
android:textColor="#222222"
android:textSize="18sp"
android:textStyle="bold" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/id_ll_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical">
<TextView
android:id="@+id/id_tv_top_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:text="All"
android:textColor="#222222"
android:textSize="15sp" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_top_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="14dp"
android:src="@mipmap/weixuan" />
</androidx.appcompat.widget.LinearLayoutCompat>
</FrameLayout>
<FrameLayout
android:id="@+id/id_fl_native"
......@@ -45,21 +61,35 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_app_manager" />
<ProgressBar
android:id="@+id/pb_loading"
<TextView
android:id="@+id/id_tv_no_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
android:layout_gravity="center"
android:drawablePadding="20dp"
android:gravity="center"
android:text="No Data"
android:visibility="gone"
android:textColor="#9199A1"
android:textSize="15sp"
app:drawableTopCompat="@mipmap/queshengye" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_rl_manager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
<TextView
android:id="@+id/id_tv_delete"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_marginHorizontal="19dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="28dp"
android:enabled="false"
android:gravity="center"
android:text="Delete"
android:textSize="16sp"
android:textColor="@drawable/select_text_c"
android:background="@drawable/selector_btn_select" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
......@@ -7,11 +8,56 @@
android:gravity="center_horizontal"
android:orientation="vertical">
<com.noober.background.view.BLLinearLayout
android:id="@+id/id_ll_tishi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="14dp"
android:layout_marginTop="300dp"
android:orientation="vertical"
app:bl_corners_radius="25dp"
app:bl_solid_color="#F4F4F4">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:layout_marginBottom="18dp"
android:drawablePadding="11dp"
android:includeFontPadding="false"
android:text="Consent Required"
android:textColor="#474747"
android:textSize="18sp"
app:drawableStartCompat="@mipmap/xiangqing" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="18dp"
android:includeFontPadding="false"
android:text="During the use of this APP, we need to obtain the following information:Mobile phone model, mobile phone manufacturer,Android system version,Application version number, application version name,Package name,Google Ad ID,Mobile phone local time zone,Mobile phone photo album, empty folders, apk files, temp files, log files,Audio files, video files, document file, file storage locations,Battery power, mobile phone standby time, battery temperature, battery voltage, battery technology, battery capacity, battery current, current average value of the battery."
android:textColor="#6D6D6D"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="18dp"
android:layout_marginTop="14dp"
android:layout_marginBottom="24dp"
android:includeFontPadding="false"
android:text="Please rest assured that we will handle your information in strict accordance with relevant laws and regulations. All the information we collect will be used reasonably to ensure the normal operation and service improvement of the APP, and we will take all necessary measures to protect the security of your personal information. Your privacy is of utmost importance to us."
android:textColor="#6D6D6D"
android:textSize="10sp" />
</com.noober.background.view.BLLinearLayout>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4F5F9"
android:orientation="vertical"
tools:context=".activity.whatsapp.WhatsAppCleanerActivity">
<FrameLayout
android:id="@+id/id_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<FrameLayout
android:id="@+id/fl_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/fanhui"
android:tint="@color/black"
tools:ignore="ContentDescription,UseAppTint" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="WhatsApp Cleaner"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="25dp"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#4772FF"
android:textSize="45sp"
android:textStyle="bold"
tools:text="108.7" />
<TextView
android:id="@+id/tv_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginStart="8dp"
android:textColor="#4772FF"
android:textSize="12sp"
android:textStyle="bold"
tools:text="KB" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="14dp"
android:text="Cleanable"
android:textColor="#666666"
android:textSize="15sp"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/id_fl_native"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:background="@color/white"
android:paddingVertical="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_whatsapp" />
<TextView
android:id="@+id/tv_tv_got_it"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginHorizontal="40dp"
android:layout_marginVertical="20dp"
android:background="@drawable/bg_355bea_10"
android:gravity="center"
android:text="Got it"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<FrameLayout
android:id="@+id/id_top_rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="14dp"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/id_tv_title_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="WhatsApp Cleaner"
android:textColor="#333333"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<FrameLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
android:layout_marginTop="80dp">
<com.base.datarecovery.view.XmlLottieAnimationView
android:id="@+id/lottie"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
app:lottie_autoPlay="true"
app:lottie_loop="true" />
<com.base.datarecovery.view.XmlLottieAnimationView
android:id="@+id/lottie_completed"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:visibility="gone"
app:lottie_autoPlay="false"
app:lottie_rawRes="@raw/loading_completed"
tools:ignore="MissingClass" />
</FrameLayout>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:text="Wait a moment..."
android:textColor="#333333"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<View
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
<FrameLayout
android:id="@+id/id_fl_native"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4F5F9"
android:orientation="vertical"
tools:context=".activity.whatsapp.WhatsAppMessageCleanActivity">
<View
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/white" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<FrameLayout
android:id="@+id/fl_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/fanhui"
android:tint="@color/black"
tools:ignore="ContentDescription,UseAppTint" />
</FrameLayout>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText"
tools:text="Image Messages" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="25dp"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="#4772FF"
android:textSize="45sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginStart="8dp"
android:text="KB"
android:textColor="#4772FF"
android:textSize="12sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="14dp"
android:text="Cleanable"
android:textColor="#666666"
android:textSize="15sp"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="16dp"
android:layout_weight="1"
android:background="@color/white"
tools:listitem="@layout/item_media_select" />
<FrameLayout
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@color/white">
<LinearLayout
android:id="@+id/ll_select_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:minWidth="23dp"
android:minHeight="23dp"
android:src="@drawable/bg_square_selector"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select All"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:id="@+id/tv_clean"
android:layout_width="266dp"
android:layout_height="50dp"
android:background="@drawable/bg_button_enable_selector"
android:enabled="false"
android:gravity="center"
android:text="CLEAN"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ll_select_all"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
......@@ -323,7 +323,7 @@
<androidx.cardview.widget.CardView
android:id="@+id/card_app_manager"
android:id="@+id/card_video"
android:layout_width="0dp"
android:layout_height="70dp"
android:layout_marginHorizontal="8dp"
......@@ -346,7 +346,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dp"
android:src="@mipmap/h_appmanager"
android:src="@mipmap/h_sp"
tools:ignore="ContentDescription" />
<TextView
......@@ -354,7 +354,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="8dp"
android:text="Uninstall App"
android:text="Video Clean"
android:textColor="@color/black"
android:textSize="15sp"
tools:ignore="HardcodedText" />
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardCornerRadius="5dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_icon"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:layout_constraintDimensionRatio="h,1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_select"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="7dp"
android:src="@mipmap/weixuan"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="12dp"
android:gravity="center_vertical">
<androidx.cardview.widget.CardView
android:id="@+id/id_cardview"
android:layout_width="42dp"
android:layout_height="42dp"
android:layout_marginStart="14dp"
android:visibility="visible"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@mipmap/m_audio" />
</androidx.cardview.widget.CardView>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_audio_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:visibility="gone"
android:src="@mipmap/m_audio" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/id_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:singleLine="true"
android:text="3702-721.mp4"
android:textColor="#222222"
android:textSize="14sp" />
<TextView
android:id="@+id/id_tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="2024-09-06 21:51"
android:textColor="#9199A1"
android:textSize="12sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
<TextView
android:id="@+id/id_tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="9dp"
android:text="5.0MB"
android:textColor="#999999"
android:textSize="13sp" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="14dp"
android:src="@mipmap/weixuan" />
</LinearLayout>
\ No newline at end of file
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