Skip to content

Commit

Permalink
added error logs
Browse files Browse the repository at this point in the history
  • Loading branch information
legendsayantan committed Sep 29, 2024
1 parent 349e50d commit bab0b21
Show file tree
Hide file tree
Showing 23 changed files with 487 additions and 71 deletions.
5 changes: 5 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
}

dependencies {
Expand All @@ -40,6 +43,8 @@ dependencies {
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.activity:activity-ktx:1.9.0'
implementation 'androidx.navigation:navigation-fragment:2.8.1'
implementation 'androidx.navigation:navigation-ui:2.8.1'

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
Expand Down
Binary file modified app/release/app-release.apk
Binary file not shown.
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@
android:supportsRtl="true"
android:theme="@style/Theme.AdbTools"
tools:targetApi="31">
<activity
android:name=".ExceptionActivity"
android:exported="false"
android:theme="@style/Theme.AdbTools" />

<receiver
android:name=".receivers.PipReceiver"
android:enabled="true"
Expand Down
121 changes: 84 additions & 37 deletions app/src/main/java/com/legendsayantan/adbtools/DebloatActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import com.google.gson.reflect.TypeToken
import com.legendsayantan.adbtools.adapters.DebloatAdapter
import com.legendsayantan.adbtools.adapters.SimpleAdapter
import com.legendsayantan.adbtools.data.AppData
import com.legendsayantan.adbtools.lib.Logger.Companion.log
import com.legendsayantan.adbtools.lib.ShizukuRunner
import com.legendsayantan.adbtools.lib.Utils.Companion.extractUrls
import com.legendsayantan.adbtools.lib.Utils.Companion.getAllInstalledApps
Expand Down Expand Up @@ -78,6 +79,9 @@ class DebloatActivity : AppCompatActivity() {
ShizukuRunner.command("pm grant $packageName android.permission.QUERY_ALL_PACKAGES",
object : ShizukuRunner.CommandResultListener {
override fun onCommandResult(output: String, done: Boolean) {}
override fun onCommandError(error: String) {
applicationContext.log(error)
}
})
val setListListener = {
list.setOnItemClickListener { _, _, position, _ ->
Expand All @@ -96,44 +100,66 @@ class DebloatActivity : AppCompatActivity() {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(listOfLinks[linkPosition])))
}
val disableBtn = MaterialButton(this)
ShizukuRunner.command("pm list packages -d",object : ShizukuRunner.CommandResultListener{
override fun onCommandResult(output: String, done: Boolean) {
if (done){
val isDisabled = output.contains(id)
disableBtn.text = if(isDisabled) getString(R.string.confirm_to_enable) else getString(R.string.confirm_to_disable)
disableBtn.setOnClickListener {
//disable app
ShizukuRunner.command("cmd package ${if(isDisabled)"enable" else "disable"} -k --user 0 $id",
object : ShizukuRunner.CommandResultListener {
override fun onCommandResult(output: String, done: Boolean) {
if (done) {
runOnUiThread {
if (output.contains("Success", true)) {
list.adapter =
DebloatAdapter(this@DebloatActivity, apps)
Toast.makeText(
applicationContext,
"Success for ${app.name}",
Toast.LENGTH_LONG
).show()
} else {
Toast.makeText(
applicationContext,
"Failed,\n$output",
Toast.LENGTH_LONG
).show()
ShizukuRunner.command("pm list packages -d",
object : ShizukuRunner.CommandResultListener {
override fun onCommandResult(output: String, done: Boolean) {
if (done) {
val isDisabled = output.contains(id)
disableBtn.text =
if (isDisabled) getString(R.string.confirm_to_enable) else getString(
R.string.confirm_to_disable
)
disableBtn.setOnClickListener {
//disable app
ShizukuRunner.command("cmd package ${if (isDisabled) "enable" else "disable"} -k --user 0 $id",
object : ShizukuRunner.CommandResultListener {
override fun onCommandResult(
output: String,
done: Boolean
) {
if (done) {
runOnUiThread {
if (output.contains("Success", true)) {
list.adapter =
DebloatAdapter(
this@DebloatActivity,
apps
)
Toast.makeText(
applicationContext,
"Success for ${app.name}",
Toast.LENGTH_LONG
).show()
} else {
Toast.makeText(
applicationContext,
"Failed,\n$output",
Toast.LENGTH_LONG
).show()
applicationContext.log(output)
}
dialog?.dismiss()
}
dialog?.dismiss()
}
}
}
})

override fun onCommandError(error: String) {
applicationContext.log(error)
}
})
}
}
}
}
})
disableBtn.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT).apply {
setMargins(0,0,25,0)

override fun onCommandError(error: String) {
applicationContext.log(error)
}
})
disableBtn.layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
).apply {
setMargins(0, 0, 25, 0)
}
val uninstallBtn = MaterialButton(this)
uninstallBtn.text = getString(R.string.confirm_to_uninstall)
Expand Down Expand Up @@ -161,11 +187,16 @@ class DebloatActivity : AppCompatActivity() {
"Failed to uninstall ${app.name},\n$output",
Toast.LENGTH_LONG
).show()
applicationContext.log(output)
}
dialog?.dismiss()
}
}
}

override fun onCommandError(error: String) {
applicationContext.log(error)
}
})
}
val btnContainer = LinearLayout(this)
Expand Down Expand Up @@ -270,6 +301,8 @@ class DebloatActivity : AppCompatActivity() {
}
}
} catch (e: Exception) {
applicationContext.log(e.stackTraceToString(), true)

if (database.isNullOrBlank()) {
onFailure()
} else {
Expand Down Expand Up @@ -339,14 +372,14 @@ class DebloatActivity : AppCompatActivity() {
.show()
}

fun restoreMode() {
private fun restoreMode() {
val activityContext = this
ShizukuRunner.command("cmd package list packages -u",
object : ShizukuRunner.CommandResultListener {
override fun onCommandResult(output: String, done: Boolean) {
if (done) {
val allApps = output.replace("package:", "").split("\n")
loadApps { installed ->
loadApps({ installed ->
val uninstalled = allApps.filter { !installed.contains(it) }
runOnUiThread {
val appsView = RecyclerView(activityContext)
Expand Down Expand Up @@ -379,18 +412,32 @@ class DebloatActivity : AppCompatActivity() {
}
}
}
override fun onCommandError(error: String) {
applicationContext.log(error)
}
})
dialog.dismiss()
}
}

}
}, {
runOnUiThread {
Toast.makeText(
activityContext,
"Error loading apps : $it",
Toast.LENGTH_LONG
).show()
}
})
}
}
override fun onCommandError(error: String) {
applicationContext.log(error)
}
})
}

companion object{
companion object {
const val FILENAME_DATABASE: String = "debloat-list.json"
}
}
16 changes: 7 additions & 9 deletions app/src/main/java/com/legendsayantan/adbtools/InitialActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.legendsayantan.adbtools.lib.GradleUpdate
import com.legendsayantan.adbtools.lib.Logger.Companion.log
import com.legendsayantan.adbtools.lib.Utils.Companion.initialiseNotiChannel
import com.legendsayantan.adbtools.lib.Utils.Companion.initialiseStatusBar
import rikka.shizuku.Shizuku
Expand All @@ -33,7 +34,9 @@ class InitialActivity : AppCompatActivity() {
Shizuku.addRequestPermissionResultListener(requestPermissionResultListener)
try {
if(!checkPermission()) Shizuku.requestPermission(REQUEST_CODE)
}catch (_:Exception){}
}catch (e:Exception){
log(e.stackTraceToString(),true)
}

findViewById<TextView>(R.id.textView).setOnClickListener {
val shizukuUrl = "https://shizuku.rikka.app/"
Expand All @@ -51,7 +54,9 @@ class InitialActivity : AppCompatActivity() {
super.onResume()
try {
if(checkPermission()) onGranted()
}catch (_:Exception){}
}catch (e:Exception){
log(e.stackTraceToString(),true)
}
}
private fun onRequestPermissionsResult(requestCode: Int, grantResult: Int) {
val granted = grantResult == PackageManager.PERMISSION_GRANTED
Expand Down Expand Up @@ -86,11 +91,4 @@ class InitialActivity : AppCompatActivity() {
finish()
}
}

private fun startOnPip(intent:Intent){
val pipFlag = intent.getBooleanExtra("pip", false)
if(pipFlag){
startActivity(Intent(this, PipStarterActivity::class.java))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import android.os.Handler
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.button.MaterialButton
import com.legendsayantan.adbtools.lib.Logger.Companion.log
import com.legendsayantan.adbtools.lib.ShizukuRunner
import com.legendsayantan.adbtools.lib.Utils.Companion.initialiseStatusBar
import java.io.File
Expand Down Expand Up @@ -73,6 +74,7 @@ class LookbackActivity : AppCompatActivity() {
Toast.LENGTH_SHORT
).show()
}
applicationContext.log(error)
}
})

Expand Down Expand Up @@ -101,6 +103,7 @@ class LookbackActivity : AppCompatActivity() {
}
callback(true)
} catch (e: IOException) {
applicationContext.log(e.stackTraceToString()?:"",true)
callback(false)
}
}
Expand Down
33 changes: 27 additions & 6 deletions app/src/main/java/com/legendsayantan/adbtools/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,16 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.switchmaterial.SwitchMaterial
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.legendsayantan.adbtools.dialog.LogBottomSheetDialog
import com.legendsayantan.adbtools.lib.Logger.Companion.log
import com.legendsayantan.adbtools.lib.ShizukuRunner
import com.legendsayantan.adbtools.lib.Utils.Companion.getNotiPerms
import com.legendsayantan.adbtools.lib.Utils.Companion.initialiseStatusBar
import com.legendsayantan.adbtools.receivers.PipReceiver
import com.legendsayantan.adbtools.services.SoundMasterService
import java.util.UUID
import kotlin.system.exitProcess

/**
* @author legendsayantan
*/
Expand All @@ -43,14 +47,22 @@ class MainActivity : AppCompatActivity() {
setContentView(R.layout.activity_main)
initialiseStatusBar()
getNotiPerms()
registerGlobalExceptionLogger()
findViewById<ImageView>(R.id.logs).setOnClickListener {
LogBottomSheetDialog(this).show()
}
findViewById<ImageView>(R.id.github).setOnClickListener {
val shizukuUrl = "https://github.com/legendsayantan/shizutools"
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(shizukuUrl)
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
)
try {
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(shizukuUrl)
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
)
}catch (e:Exception){
log(e.stackTraceToString(),true)
}
}
val cardDebloat = findViewById<MaterialCardView>(R.id.cardDebloat)
val cardThemePatcher = findViewById<MaterialCardView>(R.id.cardThemePatcher)
Expand Down Expand Up @@ -195,6 +207,7 @@ class MainActivity : AppCompatActivity() {
runOnUiThread {
commandOut.text = "ERROR:\n$error"
}
applicationContext.log(error)
}
})
editText.selectAll()
Expand Down Expand Up @@ -247,4 +260,12 @@ class MainActivity : AppCompatActivity() {
.setPositiveButton(getString(R.string.ok)) { _, _ -> }
.create().show()
}

private fun registerGlobalExceptionLogger(){
Thread.setDefaultUncaughtExceptionHandler { _, e ->
e.printStackTrace()
applicationContext.log(e.stackTraceToString(),true)
exitProcess(0)
}
}
}
Loading

0 comments on commit bab0b21

Please sign in to comment.