Skip to content

Commit

Permalink
Fix: Deprecated API in SDK 33
Browse files Browse the repository at this point in the history
Adding function `getApplicationInfoCompact`, `getParcelableArrayListCompact` to resolve deprecated API
  • Loading branch information
BryanGIG committed Nov 17, 2022
1 parent bd9930a commit d7b6ec1
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,16 @@ import android.content.Context
import android.content.Context.ACTIVITY_SERVICE
import android.content.pm.ApplicationInfo
import com.dumper.android.BuildConfig
import com.dumper.android.utils.getApplicationInfoCompact

class Process(private val ctx: Context) {
fun getAllProcess(): ArrayList<ProcessData> {
val finalAppsBundle = ArrayList<ProcessData>()
val activityManager = ctx.getSystemService(ACTIVITY_SERVICE) as ActivityManager
val processInfo = activityManager.runningAppProcesses

processInfo.forEach {
activityManager.runningAppProcesses.forEach {
try {
val apps =
ctx.packageManager.getApplicationInfo(it.processName.substringBefore(":"), 0)
val apps = ctx.packageManager.getApplicationInfoCompact(it.processName.substringBefore(":"), 0)
if (!apps.isInvalid() && apps.packageName != BuildConfig.APPLICATION_ID) {
val data = ProcessData(
it.processName,
Expand Down
44 changes: 12 additions & 32 deletions app/src/main/java/com/dumper/android/messager/MSGReceiver.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.dumper.android.messager


import android.os.Build
import android.os.Handler
import android.os.Message
import android.widget.Toast
Expand All @@ -10,6 +8,7 @@ import com.dumper.android.core.MainActivity
import com.dumper.android.core.RootServices
import com.dumper.android.dumper.process.ProcessData
import com.dumper.android.ui.memory.MemoryFragment
import com.dumper.android.utils.getParcelableArrayListCompact

class MSGReceiver(private val activity: MainActivity) : Handler.Callback {

Expand All @@ -18,36 +17,17 @@ class MSGReceiver(private val activity: MainActivity) : Handler.Callback {

when (message.what) {
RootServices.MSG_GET_PROCESS_LIST -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
message.data.getParcelableArrayList(
RootServices.LIST_ALL_PROCESS,
ProcessData::class.java
)
?.let {

val navController =
activity.binding.navHostFragmentActivityMain.getFragment<NavHostFragment>()
navController.childFragmentManager.fragments
.find { it is MemoryFragment }
?.let { fragment ->
(fragment as MemoryFragment).showProcess(it)
}

}
} else {
message.data.getParcelableArrayList<ProcessData>(RootServices.LIST_ALL_PROCESS)
?.let {

val navController =
activity.binding.navHostFragmentActivityMain.getFragment<NavHostFragment>()
navController.childFragmentManager.fragments
.find { it is MemoryFragment }
?.let { fragment ->
(fragment as MemoryFragment).showProcess(it)
}

}
}
message.data.getParcelableArrayListCompact<ProcessData>(RootServices.LIST_ALL_PROCESS)
?.let {
val navHost = activity.binding.navHostFragmentActivityMain
val navController = navHost.getFragment<NavHostFragment>()
val fragments = navController.childFragmentManager.fragments

fragments.find { it is MemoryFragment }
?.let { fragment ->
(fragment as MemoryFragment).showProcess(it)
}
}
}
RootServices.MSG_DUMP_PROCESS -> {
message.data.getString(RootServices.DUMP_LOG)?.let {
Expand Down
28 changes: 28 additions & 0 deletions app/src/main/java/com/dumper/android/utils/Utils.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
package com.dumper.android.utils

import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.os.Parcelable
import java.util.ArrayList

const val TAG = "PADumper"
const val DEFAULT_DIR = "/sdcard/PADumper"

Expand All @@ -9,4 +16,25 @@ fun Long.toHex(): String {

fun Long.toMB(): Long {
return this * 1024 * 1024
}

@Suppress("DEPRECATION")
inline fun <reified T : Parcelable> Bundle.getParcelableArrayListCompact(key: String): ArrayList<T>? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
getParcelableArrayList(
key,
T::class.java
)
} else {
getParcelableArrayList(key)
}
}

@Suppress("DEPRECATION")
fun PackageManager.getApplicationInfoCompact(packageName: String, flags: Int): ApplicationInfo {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
getApplicationInfo(packageName, PackageManager.ApplicationInfoFlags.of(flags.toLong()))
} else {
getApplicationInfo(packageName, flags)
}
}

0 comments on commit d7b6ec1

Please sign in to comment.