Commit 53a9b9ae authored by wanglei's avatar wanglei

...

parent 92319f65
...@@ -19,7 +19,6 @@ import com.base.filerecoveryrecyclebin.bean.ConstObject.APP_PROCESS ...@@ -19,7 +19,6 @@ import com.base.filerecoveryrecyclebin.bean.ConstObject.APP_PROCESS
import com.base.filerecoveryrecyclebin.bean.ConstObject.BATTERY_INFO import com.base.filerecoveryrecyclebin.bean.ConstObject.BATTERY_INFO
import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER
import com.base.filerecoveryrecyclebin.bean.ConstObject.LARGE_FILE import com.base.filerecoveryrecyclebin.bean.ConstObject.LARGE_FILE
import com.base.filerecoveryrecyclebin.bean.ConstObject.PRIVACY_SPACE
import com.base.filerecoveryrecyclebin.bean.ConstObject.RECOVERY_DOCUMENTS import com.base.filerecoveryrecyclebin.bean.ConstObject.RECOVERY_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.ConstObject.RECOVERY_PHOTOS import com.base.filerecoveryrecyclebin.bean.ConstObject.RECOVERY_PHOTOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.RECOVERY_VIDEOS import com.base.filerecoveryrecyclebin.bean.ConstObject.RECOVERY_VIDEOS
...@@ -30,7 +29,6 @@ import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS ...@@ -30,7 +29,6 @@ import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCREENSHOT_CLEANER import com.base.filerecoveryrecyclebin.bean.ConstObject.SCREENSHOT_CLEANER
import com.base.filerecoveryrecyclebin.bean.ConstObject.WHATSAPP_CLEANER import com.base.filerecoveryrecyclebin.bean.ConstObject.WHATSAPP_CLEANER
import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutResultBinding import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutResultBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatSize import com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatSize
......
...@@ -10,6 +10,7 @@ import android.text.style.UnderlineSpan ...@@ -10,6 +10,7 @@ import android.text.style.UnderlineSpan
import android.view.View import android.view.View
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.MyApplication import com.base.filerecoveryrecyclebin.MyApplication
import com.base.filerecoveryrecyclebin.activity.appmanager.AppManagerAnimationActivity
import com.base.filerecoveryrecyclebin.activity.appprocess.AppProcessAnimationActivity import com.base.filerecoveryrecyclebin.activity.appprocess.AppProcessAnimationActivity
import com.base.filerecoveryrecyclebin.activity.battery.BatteryInfoAnimationActivity import com.base.filerecoveryrecyclebin.activity.battery.BatteryInfoAnimationActivity
import com.base.filerecoveryrecyclebin.activity.guide.GuideActivity import com.base.filerecoveryrecyclebin.activity.guide.GuideActivity
...@@ -20,6 +21,7 @@ import com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity ...@@ -20,6 +21,7 @@ import com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity
import com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerAnimationActivity import com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerAnimationActivity
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.bean.ConstObject import com.base.filerecoveryrecyclebin.bean.ConstObject
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_APP_MANAGER
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_APP_PROCESS import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_APP_PROCESS
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_BATTERY_INFO import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_BATTERY_INFO
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH
...@@ -171,6 +173,10 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() { ...@@ -171,6 +173,10 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
startActivity(Intent(this, AppProcessAnimationActivity::class.java)) startActivity(Intent(this, AppProcessAnimationActivity::class.java))
} }
ID_APP_MANAGER -> {
startActivity(Intent(this, AppManagerAnimationActivity::class.java))
}
ID_BATTERY_INFO -> { ID_BATTERY_INFO -> {
startActivity(Intent(this, BatteryInfoAnimationActivity::class.java)) startActivity(Intent(this, BatteryInfoAnimationActivity::class.java))
} }
......
...@@ -7,27 +7,24 @@ import android.content.pm.ApplicationInfo ...@@ -7,27 +7,24 @@ import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo import android.content.pm.PackageInfo
import android.graphics.Color import android.graphics.Color
import android.net.Uri import android.net.Uri
import android.provider.Settings
import android.view.View import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.adapter.AppManagerAdapter import com.base.filerecoveryrecyclebin.adapter.AppManagerAdapter
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.bean.AppBean import com.base.filerecoveryrecyclebin.bean.AppBean
import com.base.filerecoveryrecyclebin.databinding.ActivityAppManagerBinding import com.base.filerecoveryrecyclebin.databinding.ActivityAppManagerBinding
import com.base.filerecoveryrecyclebin.databinding.ActivityAppProcessBinding
import com.base.filerecoveryrecyclebin.databinding.ActivityPhotoManagerBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatSize
import com.base.filerecoveryrecyclebin.utils.BarUtils import com.base.filerecoveryrecyclebin.utils.BarUtils
import com.base.filerecoveryrecyclebin.utils.RamUtils.ramPair import com.base.filerecoveryrecyclebin.utils.RamUtils.ramPair
import com.base.filerecoveryrecyclebin.view.DialogViews.showAppProcessExitDialog
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() { class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
var uninstallTimes = 0
override val binding: ActivityAppManagerBinding by lazy { override val binding: ActivityAppManagerBinding by lazy {
ActivityAppManagerBinding.inflate(layoutInflater) ActivityAppManagerBinding.inflate(layoutInflater)
} }
...@@ -46,31 +43,44 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() { ...@@ -46,31 +43,44 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
val ramPair = ramPair() val ramPair = ramPair()
val percent = ((ramPair.first.toFloat() / ramPair.second.toFloat()) * 100).toInt() val percent = ((ramPair.first.toFloat() / ramPair.second.toFloat()) * 100).toInt()
ePercent = percent ePercent = percent
binding.tvPercent.text = percent.toString()
binding.pbRam.progress = percent
binding.tvSize.text = "${ramPair.first.toFormatSize()}/${ramPair.second.toFormatSize()}"
adapter = AppManagerAdapter { pkg -> adapter = AppManagerAdapter(true) { pkg ->
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) if (uninstallTimes % 3 == 0 && uninstallTimes > 0) {
val uri = Uri.fromParts("package", pkg, null) // 替换为需要跳转的应用包名 AdmobMaxHelper.admobMaxShowInterstitialAd(this) { unInstall(pkg) }
intent.setData(uri) } else {
startActivity(intent) unInstall(pkg)
}
} }
binding.rv.adapter = adapter binding.rv.adapter = adapter
initData() 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() { override fun initListener() {
super.initListener() super.initListener()
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showAppProcessExitDialog(ePercent) {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppProcessActivity) {
//
// }
finishToMain() finishToMain()
} }
}
binding.flFanhui.setOnClickListener { binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
......
...@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat ...@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.bean.ConstObject.APP_MANAGER
import com.base.filerecoveryrecyclebin.bean.ConstObject.APP_PROCESS import com.base.filerecoveryrecyclebin.bean.ConstObject.APP_PROCESS
import com.base.filerecoveryrecyclebin.bean.ConstObject.BATTERY_INFO import com.base.filerecoveryrecyclebin.bean.ConstObject.BATTERY_INFO
import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER
...@@ -36,6 +37,7 @@ class AppFunctionAdapter(val click: (name: String) -> Unit) : ...@@ -36,6 +37,7 @@ class AppFunctionAdapter(val click: (name: String) -> Unit) :
Fun(SCREENSHOT_CLEANER, R.mipmap.screenshots), Fun(SCREENSHOT_CLEANER, R.mipmap.screenshots),
Fun(WHATSAPP_CLEANER, R.mipmap.h_whatsapp), Fun(WHATSAPP_CLEANER, R.mipmap.h_whatsapp),
Fun(APP_PROCESS, R.mipmap.h_process), Fun(APP_PROCESS, R.mipmap.h_process),
Fun(APP_MANAGER, R.mipmap.c_appmanager),
Fun(LARGE_FILE, R.mipmap.c_large), Fun(LARGE_FILE, R.mipmap.c_large),
Fun(BATTERY_INFO, R.mipmap.c_battery), Fun(BATTERY_INFO, R.mipmap.c_battery),
) )
......
...@@ -9,7 +9,8 @@ import com.base.filerecoveryrecyclebin.bean.AppBean ...@@ -9,7 +9,8 @@ import com.base.filerecoveryrecyclebin.bean.AppBean
import com.base.filerecoveryrecyclebin.databinding.ItemAppManagerBinding import com.base.filerecoveryrecyclebin.databinding.ItemAppManagerBinding
import com.base.filerecoveryrecyclebin.view.XmlEx.inflate import com.base.filerecoveryrecyclebin.view.XmlEx.inflate
class AppManagerAdapter(val click: (packageName: String) -> Unit) : RecyclerView.Adapter<AppManagerAdapter.AAA>() { class AppManagerAdapter(val isUninstall: Boolean = false, val click: (packageName: String) -> Unit) :
RecyclerView.Adapter<AppManagerAdapter.AAA>() {
private val beanList = arrayListOf<AppBean>() private val beanList = arrayListOf<AppBean>()
...@@ -23,6 +24,7 @@ class AppManagerAdapter(val click: (packageName: String) -> Unit) : RecyclerView ...@@ -23,6 +24,7 @@ class AppManagerAdapter(val click: (packageName: String) -> Unit) : RecyclerView
return beanList.size return beanList.size
} }
@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: AAA, position: Int) { override fun onBindViewHolder(holder: AAA, position: Int) {
val binding = ItemAppManagerBinding.bind(holder.itemView) val binding = ItemAppManagerBinding.bind(holder.itemView)
val bean = beanList[position] val bean = beanList[position]
...@@ -31,6 +33,9 @@ class AppManagerAdapter(val click: (packageName: String) -> Unit) : RecyclerView ...@@ -31,6 +33,9 @@ class AppManagerAdapter(val click: (packageName: String) -> Unit) : RecyclerView
binding.tvStop.setOnClickListener { binding.tvStop.setOnClickListener {
click.invoke(bean.packageName) click.invoke(bean.packageName)
} }
if (isUninstall) {
binding.tvStop.text = "UnInstall"
}
} }
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
......
...@@ -12,6 +12,7 @@ object ConstObject { ...@@ -12,6 +12,7 @@ object ConstObject {
const val ID_RECOVERY_DOCUMENTS = 13002 const val ID_RECOVERY_DOCUMENTS = 13002
const val ID_WHATSAPP = 12001 const val ID_WHATSAPP = 12001
const val ID_APP_PROCESS = 12056 const val ID_APP_PROCESS = 12056
const val ID_APP_MANAGER = 12076
const val ID_BATTERY_INFO = 12086 const val ID_BATTERY_INFO = 12086
const val RECOVERY_PHOTOS = "Recovery Photos" const val RECOVERY_PHOTOS = "Recovery Photos"
...@@ -24,6 +25,7 @@ object ConstObject { ...@@ -24,6 +25,7 @@ object ConstObject {
const val RECYCLE_BIN = "Recycle Bin" const val RECYCLE_BIN = "Recycle Bin"
const val WHATSAPP_CLEANER = "WhatsApp Cleaner" const val WHATSAPP_CLEANER = "WhatsApp Cleaner"
const val APP_PROCESS = "App Process" const val APP_PROCESS = "App Process"
const val APP_MANAGER = "App Manager"
const val LARGE_FILE = "Large File" const val LARGE_FILE = "Large File"
const val BATTERY_INFO = "Battery Info" const val BATTERY_INFO = "Battery Info"
......
...@@ -17,6 +17,7 @@ import androidx.core.graphics.drawable.IconCompat ...@@ -17,6 +17,7 @@ import androidx.core.graphics.drawable.IconCompat
import com.base.filerecoveryrecyclebin.MyApplication import com.base.filerecoveryrecyclebin.MyApplication
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.activity.SplashActivity import com.base.filerecoveryrecyclebin.activity.SplashActivity
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_APP_MANAGER
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_APP_PROCESS import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_APP_PROCESS
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_BATTERY_INFO import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_BATTERY_INFO
import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH import com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH
...@@ -284,6 +285,7 @@ object NotificationUtil { ...@@ -284,6 +285,7 @@ object NotificationUtil {
ID_RECOVERY_DOCUMENTS, ID_RECOVERY_DOCUMENTS,
ID_WHATSAPP, ID_WHATSAPP,
ID_APP_PROCESS, ID_APP_PROCESS,
ID_APP_MANAGER,
ID_BATTERY_INFO, ID_BATTERY_INFO,
) )
} }
\ No newline at end of file
...@@ -31,91 +31,13 @@ ...@@ -31,91 +31,13 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:text="App Process" android:text="App Manager"
android:textSize="19sp" android:textSize="19sp"
android:textStyle="bold" android:textStyle="bold"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
</FrameLayout> </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>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="25dp"
android:text="Manager user apps"
android:textColor="#999999"
android:textSize="15sp"
tools:ignore="HardcodedText" />
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
......
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