GithubHelp home page GithubHelp logo

hamza417 / inure Goto Github PK

View Code? Open in Web Editor NEW
884.0 14.0 50.0 85.86 MB

An elegant and beautiful premium Android app manager for both rooted and non-rooted devices with a built-in terminal, analytics, debloat, stats and various other panels with an independent custom theme engine, developed with purely custom APIs created for this app.

License: GNU General Public License v3.0

Kotlin 66.58% AIDL 0.12% CSS 0.32% HTML 4.65% Java 26.80% JavaScript 0.83% CMake 0.02% C++ 0.28% C 0.07% Shell 0.06% PowerShell 0.03% Python 0.25%
app manager tool android android-application android-app utilities ui interface animations

inure's Issues

Setting in "create app list": izzyondroid link

The izzyondroid f-droid repo is hugely popular, containing hundreds and hundreds of applications,

is the second most popular app store after f-droid. Half of my apps are downloaded from there. It is a privacy-friendly repository. This should be added

Crash

BUG
image

Crashes once we go Inside the Apps and click on any app

Adb

Hi sir first of all thank you for your hard work I'll like to ask can you add adb root method for those who are not rooted ๐Ÿ‘

Detecting Trackers Issue

When I click on the option to check for trackers it just keeps spinning now endlessly. I think this used to work in a previous version but now it doesn't work anymore.

terminating with uncaught exception of type St9bad_alloc: std::bad_alloc

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 21303 >>> app.simple.inure <<<

backtrace:
  #00  pc 0x0000000000064f9c  /apex/com.android.runtime/lib/bionic/libc.so (abort+172)
  #01  pc 0x00000000000338ff  /system/lib/libc++.so (abort_message+90)
  #02  pc 0x0000000000033a5b  /system/lib/libc++.so (demangling_terminate_handler()+142)
  #03  pc 0x00000000000343bf  /system/lib/libc++.so (std::__terminate(void (*)())+2)
  #04  pc 0x0000000000033c2f  /system/lib/libc++.so (__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)+12)
  #05  pc 0x0000000000033bc5  /system/lib/libc++.so (__cxa_throw+72)
  #06  pc 0x0000000000036139  /system/lib/libc++.so (operator new(unsigned int)+52)
  #07  pc 0x0000000000147577  /system/lib/libandroid_runtime.so (MapCentralDirectory(char const*, ZipArchive*)+90)
  #08  pc 0x000000000014531b  /system/lib/libandroid_runtime.so (OpenArchive(char const*, ZipArchive**)+94)
  #09  pc 0x0000000000038dd5  /system/lib/libandroidfw.so (android::ZipAssetsProvider::Create(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, unsigned int)+40)
  #10  pc 0x000000000012a9bb  /system/lib/libandroid_runtime.so (android::NativeLoad(_JNIEnv*, _jclass*, int, _jstring*, int, _jobject*)+866)
  #11  pc 0x00000000003ef563  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (art_jni_trampoline+98)
  #12  pc 0x000000000089ff35  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.app.ResourcesManager.loadApkAssets+1076)
  #13  pc 0x000000000089a9ed  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.app.ResourcesManager.createApkAssetsSupplierNotLocked+700)
  #14  pc 0x00000000008a3fe1  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.app.ResourcesManager.getResources+368)
  #15  pc 0x00000000008a3e61  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.app.ResourcesManager.getResources+128)
  #16  pc 0x00000000009e7507  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.app.ApplicationPackageManager.getResourcesForApplication+526)
  #17  pc 0x00000000009e82d1  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.app.ApplicationPackageManager.getText+384)
  #18  pc 0x00000000008d98f3  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.content.pm.PackageItemInfo.loadUnsafeLabel+762)
  #19  pc 0x00000000008d948f  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.content.pm.PackageItemInfo.loadLabel+1134)
  #20  pc 0x00000000009e46c5  /data/misc/apexdata/com.android.art/dalvik-cache/arm/boot.oat (android.app.ApplicationPackageManager.getApplicationLabel+44)
  #21  pc 0x00000000000ebdec  /apex/com.android.art/lib/libart.so (nterp_helper+2908)
  #22  pc 0x00000000003a47b4  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #23  pc 0x00000000000ebd80  /apex/com.android.art/lib/libart.so (nterp_helper+2800)
  #24  pc 0x00000000004680ae  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #25  pc 0x00000000000ebd80  /apex/com.android.art/lib/libart.so (nterp_helper+2800)
  #26  pc 0x0000000000467d64  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #27  pc 0x00000000000eb2c8  /apex/com.android.art/lib/libart.so (nterp_helper+56)
  #28  pc 0x000000000046733a  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #29  pc 0x00000000000ebd80  /apex/com.android.art/lib/libart.so (nterp_helper+2800)
  #30  pc 0x0000000000ad0e54  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #31  pc 0x00000000000ec7e8  /apex/com.android.art/lib/libart.so (nterp_helper+5464)
  #32  pc 0x0000000000b11394  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #33  pc 0x00000000000ec72c  /apex/com.android.art/lib/libart.so (nterp_helper+5276)
  #34  pc 0x0000000000b42844  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #35  pc 0x00000000000ec7e8  /apex/com.android.art/lib/libart.so (nterp_helper+5464)
  #36  pc 0x0000000000b49998  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #37  pc 0x00000000000ebd80  /apex/com.android.art/lib/libart.so (nterp_helper+2800)
  #38  pc 0x0000000000b48b54  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #39  pc 0x00000000000ebd80  /apex/com.android.art/lib/libart.so (nterp_helper+2800)
  #40  pc 0x0000000000b47a5c  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #41  pc 0x00000000000ebd80  /apex/com.android.art/lib/libart.so (nterp_helper+2800)
  #42  pc 0x0000000000b47b8c  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #43  pc 0x00000000000ebd80  /apex/com.android.art/lib/libart.so (nterp_helper+2800)
  #44  pc 0x0000000000b47b3c  /data/app/~~-Y5cne1Kvx5R0r4Oy85KNw==/app.simple.inure-X13shB5ubrzA7wXbB0GEkg==/oat/arm/base.vdex
  #45  pc 0x00000000003af7d5  /apex/com.android.art/lib/libart.so (art_quick_invoke_stub_internal+68)
  #46  pc 0x00000000003af263  /apex/com.android.art/lib/libart.so (void art::quick_invoke_reg_setup<false>(art::ArtMethod*, unsigned int*, unsigned int, art::Thread*, art::JValue*, char const*) (.__uniq.192663596067446536341070919852553954320.llvm.1260006661547204787)+158)
  #47  pc 0x0000000000279f55  /apex/com.android.art/lib/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+136)
  #48  pc 0x00000000002fddf1  /apex/com.android.art/lib/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) (.__uniq.245181933781456475607640333933569312899.llvm.14854189631316110570)+40)
  #49  pc 0x00000000002fdd21  /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+164)
  #50  pc 0x000000000034047b  /apex/com.android.art/lib/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+42)
  #51  pc 0x00000000002de945  /apex/com.android.art/lib/libart.so (art::Thread::CreateCallback(void*)+416)
  #52  pc 0x00000000000afc3f  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+40)
  #53  pc 0x0000000000065ed1  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+30)

App can't be launched

Screenshot_20230627-152619_Inure
The app can't be launched. Endless loading screen. The entire system is not properly responding while this process until I kill Inure app.

  • Device: [Poco X3 NFC]
  • OS: [Crdroid ROM Android 13]
  • Version [Build80]

WebDav Apps Backup

My phone doesn't have enough storage, I have 600 apps, how to export directly to PC?

export to WebDAV, may be the only way to solve this problem.
PC run WebDAV server, Android Mount server

Parameter specified as non-null is null

time: 1672438817635
msg: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter adapterWindows
stacktrace: java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter adapterWindows
	at app.simple.inure.popups.terminal.PopupTerminalWindows.<init>(Unknown Source:7)
	at app.simple.inure.terminal.Term.lambda$onCreate$4$app-simple-inure-terminal-Term(Term.java:405)
	at app.simple.inure.terminal.Term$$ExternalSyntheticLambda7.onClick(Unknown Source:2)
	at android.view.View.performClick(View.java:7506)
	at android.view.View.performClickInternal(View.java:7483)
	at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
	at android.view.View$PerformClick.run(View.java:29335)
	at android.os.Handler.handleCallback(Handler.java:942)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:7894)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:550)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Crash hmm.

My device is a motorola edge 20 lite.

java.lang.RuntimeException: Unable to stop service app.simple.inure.terminal.TermService@1a8fc9: java.lang.NullPointerException: Attempt to invoke virtual method 'void app.simple.inure.decorations.emulatorview.TerminalEmulator.finish()' on a null object reference
	at android.app.ActivityThread.handleStopService(ActivityThread.java:4830)
	at android.app.ActivityThread.access$2200(ActivityThread.java:261)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2197)
	at android.os.Handler.dispatchMessage(Handler.java:111)
	at android.os.Looper.loopOnce(Looper.java:238)
	at android.os.Looper.loop(Looper.java:357)
	at android.app.ActivityThread.main(ActivityThread.java:8090)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1026)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void app.simple.inure.decorations.emulatorview.TerminalEmulator.finish()' on a null object reference
	at app.simple.inure.decorations.emulatorview.TermSession.finish(TermSession.java:610)
	at app.simple.inure.terminal.GenericTermSession.finish(GenericTermSession.java:125)
	at app.simple.inure.terminal.ShellTermSession.finish(ShellTermSession.java:215)
	at app.simple.inure.terminal.TermService.onDestroy(TermService.java:121)
	at android.app.ActivityThread.handleStopService(ActivityThread.java:4810)
	... 9 more

A million times over on every device I own. Recreate the issue by launching the app Android 10/11/13 magisk rooted. Build 76 The app was crashed!

java.lang.RuntimeException: android.os.DeadSystemException
at android.app.ApplicationPackageManager.getInstalledPackagesAsUser(ApplicationPackageManager.java:1031)
at android.app.ApplicationPackageManager.getInstalledPackages(ApplicationPackageManager.java:1016)
at app.simple.inure.extensions.viewmodels.PackageUtilsViewModel.loadInstalledApps(PackageUtilsViewModel.kt:85)
at app.simple.inure.extensions.viewmodels.PackageUtilsViewModel.getInstalledApps(PackageUtilsViewModel.kt:35)
at app.simple.inure.viewmodels.panels.UsageStatsViewModel.getUsageStats(UsageStatsViewModel.kt:94)
at app.simple.inure.viewmodels.panels.UsageStatsViewModel.access$getUsageStats(UsageStatsViewModel.kt:22)
at app.simple.inure.viewmodels.panels.UsageStatsViewModel$loadAppStats$1.invokeSuspend(UsageStatsViewModel.kt:37)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@dbb1ae7, Dispatchers.Default]
Caused by: android.os.DeadSystemException
... 13 more

h

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Smartphone (please complete the following information):

  • Device: [e.g. Pixel 6]
  • OS: [e.g. AOSP Android 13]
  • Version [e.g. Build60]

Additional context
Add any other context about the problem here.

"Error: Unexpected end of document" when blocking trackers

Describe the bug
When blocking trackers, either by going to Apps -> Selecting an App -> Trackers -> Selecting the "batch select" button in the top left -> Selecting block
OR
Using the new batch tracker block feature

Sometimes I will get an error popup at the bottom that says "Error: Unexpected end of document". When I used the batch tracker block for the first time, the message actually popped up like 20 times layered one over the other. But when I did them manually one by one, it would only happen once. It's inconsistent, and not easy to replicate. After the 20 messages popped up the first time with the batch block, I did the block a second time, and it did not pop up that time.
To Reproduce
Steps to reproduce the behavior:

  1. Go to Apps
  2. Select an App
  3. Click Trackers
  4. Select the "batch selection" icon in the top left
  5. Select block
  6. Error pops up in the bottom sometimes

OR

  1. Go to Batch
  2. Select all apps
  3. Click the nuclear "tracker" icon
  4. Select all trackers
  5. Block
  6. Error pops up in the bottom sometimes, potentially several times

Reproducing is, unfortunately, inconsistent. I think I sometimes noticed it with the play store app "AppSales" and a few others. It seems after the first time, it doesn't happen as often. I was able to get it to happen again by re-enable the trackers, clearing the app data for Inure, then trying again. Though I then tried to do that a second time, and it didn't happen that time.

Expected behavior
Error should not pop up, and all selected trackers should be blocked

Screenshots

image

Smartphone:

  • Device: Moto Edge 2021
  • OS: LineageOS 20 Android 13
  • Version: Build 65

Scudo ERROR: invalid chunk state when deallocating address 0x<sanitized>

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 24499 >>> app.simple.inure <<<

backtrace:
  #00  pc 0x000000000004f064  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164)
  #01  pc 0x0000000000042b00  /apex/com.android.runtime/lib64/bionic/libc.so (scudo::die()+8)
  #02  pc 0x000000000004318c  /apex/com.android.runtime/lib64/bionic/libc.so (scudo::ScopedErrorReport::~ScopedErrorReport()+32)
  #03  pc 0x00000000000433c0  /apex/com.android.runtime/lib64/bionic/libc.so (scudo::reportInvalidChunkState(scudo::AllocatorAction, void*)+76)
  #04  pc 0x00000000000448d0  /apex/com.android.runtime/lib64/bionic/libc.so (scudo::Allocator<scudo::AndroidConfig, &(scudo_malloc_postinit)>::deallocate(void*, scudo::Chunk::Origin, unsigned long, unsigned long)+340)
  #05  pc 0x00000000003f03d0  /system/lib64/libhwui.so (SkBitmap::~SkBitmap()+112)
  #06  pc 0x000000000038d768  /system/lib64/libhwui.so (android::uirenderer::VectorDrawable::Tree::updateBitmapCache(android::Bitmap&, bool)+256)
  #07  pc 0x000000000038d3f0  /system/lib64/libhwui.so (android::uirenderer::VectorDrawable::Tree::drawStaging(android::Canvas*)+104)
  #08  pc 0x000000000038d2a4  /system/lib64/libhwui.so (android::uirenderer::VectorDrawable::Tree::draw(android::Canvas*, SkColorFilter*, SkRect const&, bool, bool)+552)
  #09  pc 0x000000000032ac08  /system/lib64/libhwui.so (android::draw(_JNIEnv*, _jobject*, long, long, long, _jobject*, unsigned char, unsigned char)+104)
  #10  pc 0x000000000024b304  /system/framework/arm64/boot-framework.oat (art_jni_trampoline+212)
  #11  pc 0x00000000005541b4  /system/framework/arm64/boot-framework.oat (android.graphics.drawable.VectorDrawable.draw+420)
  #12  pc 0x0000000000523988  /system/framework/arm64/boot-framework.oat (android.graphics.drawable.AdaptiveIconDrawable.draw+280)
  #13  pc 0x0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #14  pc 0x0000000000198e94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
  #15  pc 0x000000000030c218  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #16  pc 0x0000000000307330  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+884)
  #17  pc 0x000000000063b038  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+868)
  #18  pc 0x000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #19  pc 0x0000000000276a1a  /system/framework/framework.jar (android.app.SemAppIconSolution.getThemeIconWithBG+794)
  #20  pc 0x000000000063e974  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualRange+1204)
  #21  pc 0x000000000012eb14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_range+20)
  #22  pc 0x00000000002766e6  /system/framework/framework.jar (android.app.SemAppIconSolution.getThemeIconWithBG+18)
  #23  pc 0x000000000063e974  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualRange+1204)
  #24  pc 0x000000000012eb14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_range+20)
  #25  pc 0x00000000002766b8  /system/framework/framework.jar (android.app.SemAppIconSolution.getThemeIconWithBG+20)
  #26  pc 0x000000000063b274  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+1440)
  #27  pc 0x000000000012e814  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20)
  #28  pc 0x000000000027668a  /system/framework/framework.jar (android.app.SemAppIconSolution.getThemeIconWithBG+10)
  #29  pc 0x00000000002fed0c  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.2255279045661746555)+268)
  #30  pc 0x00000000006299e8  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+796)
  #31  pc 0x000000000013dff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #32  pc 0x000000000047c888  /system/framework/arm64/boot-framework.oat (android.app.ApplicationPackageManager.loadUnbadgedItemIcon+4024)
  #33  pc 0x000000000047b47c  /system/framework/arm64/boot-framework.oat (android.app.ApplicationPackageManager.loadItemIcon+60)
  #34  pc 0x00000000003b4f14  /system/framework/arm64/boot-framework.oat (android.content.pm.PackageItemInfo.loadIcon+100)
  #35  pc 0x00000000003b4e88  /system/framework/arm64/boot-framework.oat (android.content.pm.PackageItemInfo.loadIcon+56)
  #36  pc 0x0000000000476d3c  /system/framework/arm64/boot-framework.oat (android.app.ApplicationPackageManager.getApplicationIcon+60)
  #37  pc 0x0000000000476db0  /system/framework/arm64/boot-framework.oat (android.app.ApplicationPackageManager.getApplicationIcon+80)
  #38  pc 0x0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #39  pc 0x0000000000198e94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
  #40  pc 0x000000000030c218  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #41  pc 0x0000000000307330  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+884)
  #42  pc 0x0000000000641874  /apex/com.android.art/lib64/libart.so (MterpInvokeVirtualQuick+708)
  #43  pc 0x0000000000132594  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #44  pc 0x0000000000472c2e  /data/app/~~tPpG076KhaxAl7lYtPf3rQ==/app.simple.inure-Ke2UZqeWE1CIG68caaK2VA==/oat/arm64/base.vdex (app.simple.inure.glide.icon.AppIconFetcher.loadData+324)
  #45  pc 0x000000000063cc08  /apex/com.android.art/lib64/libart.so (MterpInvokeInterface+1840)
  #46  pc 0x000000000012ea14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_interface+20)
  #47  pc 0x00000000005067d4  /data/app/~~tPpG076KhaxAl7lYtPf3rQ==/app.simple.inure-Ke2UZqeWE1CIG68caaK2VA==/oat/arm64/base.vdex (com.bumptech.glide.load.engine.SourceGenerator.startNextLoad+30)
  #48  pc 0x000000000063d79c  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+1164)
  #49  pc 0x000000000012e914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
  #50  pc 0x000000000050657e  /data/app/~~tPpG076KhaxAl7lYtPf3rQ==/app.simple.inure-Ke2UZqeWE1CIG68caaK2VA==/oat/arm64/base.vdex (com.bumptech.glide.load.engine.SourceGenerator.startNext+194)
  #51  pc 0x000000000063cc08  /apex/com.android.art/lib64/libart.so (MterpInvokeInterface+1840)
  #52  pc 0x000000000012ea14  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_interface+20)
  #53  pc 0x0000000000503a3e  /data/app/~~tPpG076KhaxAl7lYtPf3rQ==/app.simple.inure-Ke2UZqeWE1CIG68caaK2VA==/oat/arm64/base.vdex (com.bumptech.glide.load.engine.DecodeJob.runGenerators+46)
  #54  pc 0x000000000063d79c  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+1164)
  #55  pc 0x000000000012e914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
  #56  pc 0x0000000000503afe  /data/app/~~tPpG076KhaxAl7lYtPf3rQ==/app.simple.inure-Ke2UZqeWE1CIG68caaK2VA==/oat/arm64/base.vdex (com.bumptech.glide.load.engine.DecodeJob.runWrapped+96)
  #57  pc 0x000000000063d79c  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+1164)
  #58  pc 0x000000000012e914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
  #59  pc 0x0000000000503942  /data/app/~~tPpG076KhaxAl7lYtPf3rQ==/app.simple.inure-Ke2UZqeWE1CIG68caaK2VA==/oat/arm64/base.vdex (com.bumptech.glide.load.engine.DecodeJob.run+54)
  #60  pc 0x00000000002fed0c  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.2255279045661746555)+268)
  #61  pc 0x00000000006299e8  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+796)
  #62  pc 0x000000000013dff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #63  pc 0x00000000002a2d38  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984)
  #64  pc 0x000000000029ff30  /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
  #65  pc 0x000000000015ced8  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Thread.run+72)
  #66  pc 0x0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #67  pc 0x0000000000198e94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
  #68  pc 0x000000000030c218  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376)
  #69  pc 0x0000000000307330  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+884)
  #70  pc 0x000000000063bd5c  /apex/com.android.art/lib64/libart.so (MterpInvokeSuper+1768)
  #71  pc 0x000000000012e894  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_super+20)
  #72  pc 0x00000000005096ee  /data/app/~~tPpG076KhaxAl7lYtPf3rQ==/app.simple.inure-Ke2UZqeWE1CIG68caaK2VA==/oat/arm64/base.vdex (com.bumptech.glide.load.engine.executor.GlideExecutor$DefaultThreadFactory$1.run+62)
  #73  pc 0x00000000002fed0c  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.2255279045661746555)+268)
  #74  pc 0x00000000006299e8  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+796)
  #75  pc 0x000000000013dff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #76  pc 0x0000000000134564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
  #77  pc 0x0000000000198e94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+204)
  #78  pc 0x00000000005320fc  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #79  pc 0x00000000005332fc  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+440)
  #80  pc 0x000000000058081c  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1272)
  #81  pc 0x00000000000b6374  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
  #82  pc 0x0000000000050fa4  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

VirusTotal support

It would be nice to have a VirusTotal status when installing APKs. Either as a link (using the hash) or using the API (we can provide our own key). If the functionality is there already, maybe you can make it more obvious where to find it.

Shared Preferences, error message

I use Build49 and want to see the item Shared Preferences. An error message appears. Probably this can be handled a little more elegant.

My system is CrDroid 8.1 with microG 0.2.25.223616 and Magisk 25.2.

Screenshot_20221124-095910_Inure

Visibility issues

I have visibility issues with the dark theme on some information sections of the settings:
Screenshot_20230112-225856_Inure
Screenshot_20230112-225902_Inure
Screenshot_20230112-225908_Inure

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object kotlin.Lazy.getValue()' on a null object reference

Process: app.simple.inure, PID: 18705
    java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object kotlin.Lazy.getValue()' on a null object reference
        at app.simple.inure.viewmodels.panels.HomeViewModel.getRecentlyInstalledAppData(HomeViewModel.kt:40)
        at app.simple.inure.viewmodels.panels.HomeViewModel.access$getRecentlyInstalledAppData(HomeViewModel.kt:28)
        at app.simple.inure.viewmodels.panels.HomeViewModel$loadRecentlyInstalledAppData$1.invokeSuspend(HomeViewModel.kt:104)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
    	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@6845302, Dispatchers.Default]

Apps button

java.lang.NoSuchFieldError: No field category of type I in class Landroid/content/pm/ApplicationInfo; or its superclasses (declaration of 'android.content.pm.ApplicationInfo' appears in /system/framework/framework.jar)
at app.simple.inure.util.PackageListUtils.setAppInfo(PackageListUtils.kt:31)
at app.simple.inure.adapters.ui.AdapterAppsDetailed.onBindViewHolder(AdapterAppsDetailed.kt:55)
at app.simple.inure.adapters.ui.AdapterAppsDetailed.onBindViewHolder(AdapterAppsDetailed.kt:23)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7254)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7337)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6194)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6460)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
at android.view.View.layout(View.java:17666)
at android.view.ViewGroup.layout(ViewGroup.java:5577)
at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1213)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:899)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:919)
at android.view.View.layout(View.java:17666)
at android.view.ViewGroup.layout(ViewGroup.java:5577)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17666)
at android.view.ViewGroup.layout(ViewGroup.java:5577)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17666)
at android.view.ViewGroup.layout(ViewGroup.java:5577)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17666)
at android.view.ViewGroup.layout(ViewGroup.java:5577)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17666)
at android.view.ViewGroup.layout(ViewGroup.java:5577)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:730)
at android.view.View.layout(View.java:17666)
at android.view.ViewGroup.layout(ViewGroup.java:5577)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2390)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2112)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1298)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6437)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:876)
at android.view.Choreographer.doCallbacks(Choreographer.java:688)
at android.view.Choreographer.doFrame(Choreographer.java:623)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:862)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6238)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

Option to "Force Stop" apps in the Batch section.

Is your feature request related to a problem? Please describe.
No. Except if a currently missing feature counts as a problem.

Describe the solution you'd like
Have Force Stop option like in the individual app menus as a Batch option as well.

Describe alternatives you've considered
none

Additional context
none

Kindly small request

Screenshot_20221029-154940_Inure_1

ADD feature putting more icon like 4 , 5 or 6 instead of 3 each row thank you sir๐Ÿ™

Close button doesn't work

Describe the bug
In the boot manager sub menu when you tap on an app and then press close nothing happens

To Reproduce
Steps to reproduce the behavior:

  1. Go to boot manager
  2. Filter to enabled (unselect disabled)
  3. Click on any app (might only be for apps with 1 enabled boot action, might be for any app)
  4. Click close
  5. Nothing happens

Expected behavior
The button should work as advertised and close the menu for enabling and disabling boot actions.

Screenshots
If applicable, add screenshots to help explain your problem.

Smartphone (please complete the following information):

  • Device: OnePlus Nord 2T 5G
  • OS: OxygenOS 13.0
  • Version: CPH2399_11_C.27

Additional context
Add any other context about the problem here.

Issue: APK Installation Affects Both Main and Secondary Accounts in Devices with Dual Messenger Functionality

Describe the bug
Some mobile devices support functionalities similar to Android's "work profile", such as Samsung's dual messenger. I've noticed that when using Inure's install APK feature, the APK gets installed on both the main and secondary accounts. However, I only want to install it on the main account.

To specify a particular user with the APK command, you can try the following:

adb install -r --user 12 app_name.apk

To Reproduce
Steps to reproduce the behavior:

  1. Open a device with multiple account functionality (e.g., Samsung's Dual Messenger).
  2. Download the APK file you wish to install
  3. Install the APK file using Inure's install APK feature. (i enabled Shizuku)
  4. Check both the main and secondary accounts, and you will find the APK has been installed on both.

Expected behavior
only want to install it on the main account (current account)

Smartphone (please complete the following information):

  • Device: Samsung Fold 4
  • OS: AOSP Android 13 (One UI 5.1)
  • Version: build99-full (Play Store)

gradlew script error

Hey I wanted to build the project myself, but without using Android Studio, just manually running Gradle.
The gradlew script is used to manually run Gradle from the command line.
The linux version of the script (just the gradlew file) is very broken, probably some of the line breaks.
To re-create it, gradle wrapper has to be run

Great app! Questions and feature requests

Hi @Hamza417, nice and useful app! I see that you've put a lot of work into the visual experience too.

I have been looking for an app to replace MyAndroidTools. I use it (still, albeit not as reliable as before) to cut off receivers, services, trackers, start up on boot, etc. One of its best features is that it can backup all the cut off receivers, etc. configuration and restore them later. This is important because when an app gets updated, sometimes those changes I make gets reverted.

Another useful feature of MyAndroidTools is that it can present a list of all of the same services or receivers (e.g., boot receiver) so I can quickly disable them for the apps I want in batch.

So far, with what I see from Inure, I already know that I will be buying the premium version. I see a lot of potential for the app and I would like to see it continue to mature and be maintained for a long time to come. For people with root, this is an indispensable tool. Aside from the two examples I cite about MyAndroidTools, Inure does so much more and provides a lot more information, so I appreciate that.

Questions and feature requests:

  1. In Inure's batch action, I see that I can select multiple apps and highlight them or move them to the top. Is there anything else I can do with batch? I would LOVE batch actions to, for example, set boot receivers (boot manger), set trackers, receivers, services, etc. Doing it one-by-one and long-pressing to make changes is time consuming and hard to track. Being able to see a list of all apps with specific receivers, etc. would be very helpful too.

  2. Can Inure backup and restore the receiver, tracker, etc. settings for the apps? I do this with MyAndroidTools every so often so that updated apps with their settings changed can be restored as I want them. Facebook is one example where it sets some of the receivers each time it updates. It's very useful to be able to restore the settings and change the receivers back.

  3. This one seems outside of Inure's scope, but I'll ask anyway. Current Android's app "optimization" is lackluster at times. For example, when I launch the Alexa app, it throws up a notification and remains running even when I exit the app. I have to force close the app to get it to stop running. It would be nice to have a Greenify/Servicely-ish feature where specified apps are stopped when I am no longer using them. Obviously, I am rooted.

Based on what I have seen so far, I would recommend Inure to those who have root and want to tweak. It has so many features! I see below that there is a sponsor option. In addition to buying the premium from Play Store, I would be willing to make donations if you can make some of these features happen.

Anyway, thank you @Hamza417, for this wonderful and beautiful app--and very useful too! Very good work! I hope you find much success!

Small UI Animation Glitch

Describe the bug
When clicking a UI element that has an animated icon, it will overlay other UI elements when scrolling and take a position its not supposed to. I'll attach a video of the glitch.

To Reproduce
Click on any app in the viewer.
Scroll down immediately.
The icon takes unusual position then disappears.

Expected behavior
The app or menu icons should slide up mid animation with the the text its supposed to be next to.

Screenshots
https://github.com/Hamza417/Inure/assets/112318871/e79e9960-4459-4d17-8d25-c2ab8706855c

Smartphone (please complete the following information):

  • Device: Irrelevant
  • OS: 12 AOSP
  • Version: Build86

Additional context
none

SVG Support?

IP_0.jpg

I am getting this error when I try to view a SVG image.
I have the image saved in Downloads, I clicked on the file, selected Inure Image Viewer, and the error appears.

The app was crashed!

java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.FrameLayout$LayoutParams
at app.simple.inure.decorations.views.BottomMenuRecyclerView.lambda$initBottomMenu$0$app-simple-inure-decorations-views-BottomMenuRecyclerView(BottomMenuRecyclerView.java:76)
at app.simple.inure.decorations.views.BottomMenuRecyclerView$$ExternalSyntheticLambda0.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8663)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

Trial

What means "10 days left in trial period", I have to pay for have it after that days?

Dedicated section for batch trackers with graphics

Is your feature request related to a problem?
The current batch tracker block is difficult to find and access, and isn't easy/possible to see an overview of the trackers.

Describe the solution you'd like
On the main page, create a "Trackers" section. It would have some charts similar to those in the Analytics section that shows how many trackers there are, how many apps do/don't have trackers, what trackers there are. Additionally, it would act as the source for bulk blocking trackers, instead of going into the batch section and clicking the tiny hidden icon.

Describe alternatives you've considered
You could also just add the data to the analytics section, and keep them separate. Though I still think the batch trackers is quite hidden.

Additional context
I also think something for blocking trackers for newly installed apps would be nice. It could be included in the trackers section if added, or it could just be a toggle in the settings.

The app was crashed!

java.lang.UnsupportedOperationException: File type not supported
	at app.simple.inure.viewmodels.installer.InstallerViewModel.prepareInstallation(InstallerViewModel.kt:77)
	at app.simple.inure.viewmodels.installer.InstallerViewModel.access$prepareInstallation(InstallerViewModel.kt:27)
	at app.simple.inure.viewmodels.installer.InstallerViewModel$packageInfo$2$1$1.invokeSuspend(InstallerViewModel.kt:34)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

per-release changelogs in Fastlane metadata

The current changelogs just tell the user to look inside the app โ€“ which can only be done after it was updated. Could you please have the changelogs instead at least state the major changes? As they are now they're rather useless, as they are not "per release" but all identical.

Scroll position of WebView lost after device rotation

Describe the bug
Scroll position of WebView in WebPage lost after device rotation

To Reproduce

  1. Go to Privacy Policy
  2. Scroll
  3. Rotate

Expected behavior
Scroll positive does not change

Screenshots
Before rotation

Screen Shot 2023-09-10 at 10 07 24 PM

After rotation
Screen Shot 2023-09-10 at 10 07 32 PM

Net Policy

Hi developer please consider to add Net policy control ex: allow net in background or deny it etcยฒ

Thanks ๐Ÿ™๐Ÿ˜Š

ERR: kotlin.collections.EmptyList Cannot be cast to java.util.Arraylist

Describe the bug
Opening the app at all has the error message appear at the bottom
"ERR: kotlin.collections.EmptyList Cannot be cast to java.util.Arraylist"

Clicking away makes the app work as intended, The error has always been there since I've installed the app.

To Reproduce

  1. Open App
  2. Error appears at bottom

Expected behavior
No Error

Screenshots
N/a

Smartphone (please complete the following information):

  • Pixel 7 Pro
  • Android 13 AOSP
  • Build92

Additional context
Using Shizuku method

Thanks

Hi sir thank you for such a beautiful app and your hard work waited for long for the first apk release am the first to download it ๐Ÿ‘‹ soon will give you feedback

Permission tab crash

java.lang.NullPointerException: Attempt to get length of null array
at app.simple.inure.viewmodels.viewers.PermissionsViewModel$loadPermissionData$1.invokeSuspend(PermissionsViewModel.kt:36)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:749)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

Inure > apps > choose framework system app > permission > crashes with logs

Devices: Realme 5i (RMX2030)
Android 10 Realme UI 1.0
Non Root mode
(Since ADB and shizuku isn't added yet)
#Bug #Crash

it's looks like only some system framework will crash bcs in experience are like this.
Apk file provided to help developer investigate the inure app:
apks.zip

Developer you are right only app with no permission crashes

FragmentManager is already executing transactions

Exception java.lang.IllegalStateException: FragmentManager is already executing transactions
  at androidx.fragment.app.FragmentManager.ensureExecReady (FragmentManager.java:1695)
  at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1754)
  at androidx.fragment.app.FragmentManager.popBackStackImmediate (FragmentManager.java:854)
  at androidx.fragment.app.FragmentManager.popBackStackImmediate (FragmentManager.java:778)
  at app.simple.inure.ui.panels.AppInfo$onViewCreated$2$1$onAppInfoMenuClicked$1$onSure$1.invoke (AppInfo.kt:227)
  at app.simple.inure.ui.panels.AppInfo$onViewCreated$2$1$onAppInfoMenuClicked$1$onSure$1.invoke (AppInfo.kt:226)
  at app.simple.inure.dialogs.action.Uninstaller.onViewCreated$lambda$5$lambda$4 (Uninstaller.kt:93)
  at app.simple.inure.dialogs.action.Uninstaller.$r8$lambda$k_RhheHTQQbS-O65URL-stwAnyA
  at app.simple.inure.dialogs.action.Uninstaller$$ExternalSyntheticLambda9.onActivityResult
  at androidx.activity.result.ActivityResultRegistry$1.onStateChanged (ActivityResultRegistry.java:149)
  at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent (LifecycleRegistry.java:360)
  at androidx.lifecycle.LifecycleRegistry.forwardPass (LifecycleRegistry.java:271)
  at androidx.lifecycle.LifecycleRegistry.sync (LifecycleRegistry.java:313)
  at androidx.lifecycle.LifecycleRegistry.moveToState (LifecycleRegistry.java:151)
  at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent (LifecycleRegistry.java:134)
  at androidx.fragment.app.Fragment.performStart (Fragment.java:3167)
  at androidx.fragment.app.FragmentStateManager.start (FragmentStateManager.java:588)
  at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:279)
  at androidx.fragment.app.FragmentStore.moveToExpectedState (FragmentStore.java:113)
  at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1433)
  at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2977)
  at androidx.fragment.app.FragmentManager.dispatchStart (FragmentManager.java:2902)
  at androidx.fragment.app.Fragment.performStart (Fragment.java:3171)
  at androidx.fragment.app.FragmentStateManager.start (FragmentStateManager.java:588)
  at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:279)
  at androidx.fragment.app.FragmentStore.moveToExpectedState (FragmentStore.java:113)
  at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1433)
  at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2977)
  at androidx.fragment.app.FragmentManager.dispatchStart (FragmentManager.java:2902)
  at androidx.fragment.app.FragmentController.dispatchStart (FragmentController.java:274)
  at androidx.fragment.app.FragmentActivity.onStart (FragmentActivity.java:359)
  at androidx.appcompat.app.AppCompatActivity.onStart (AppCompatActivity.java:251)
  at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1455)
  at android.app.Activity.performStart (Activity.java:8315)
  at android.app.ActivityThread.handleStartActivity (ActivityThread.java:4060)
  at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:221)
  at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:201)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:173)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2438)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at android.app.ActivityThread.main (ActivityThread.java:8663)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:567)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135)

Found a possible security concern

Hello ๐Ÿ‘‹

I run a security community that finds and fixes vulnerabilities in OSS. A researcher (@blackbeard666) has found a potential issue, which I would be eager to share with you.

Could you add a SECURITY.md file with an e-mail address for me to send further details to? GitHub recommends a security policy to ensure issues are responsibly disclosed, and it would help direct researchers in the future.

Looking forward to hearing from you ๐Ÿ‘

(cc @huntr-helper)

Use system font.

Is your feature request related to a problem? Please describe.
The font currently hard-coded is difficult to read, and causes the application to appear inconsistent. However, this would also be a significant problem if any of my dyslexic friends were to need to use it, since some have already rooted their devices to be able to change the system font to a dyslexia-friendly version.

Describe the solution you'd like
Use the system font.

Describe alternatives you've considered
Allow the user to be able to choose to use the system font app-wide, but keep the current ones as the hard-coded default. Would make it instantly difficult for dyslexic people to navigate, though.

Additional context
https://github.com/Hamza417/Inure#apps-interface

Execute command with adb support

Hi developer i have idea pls consider allow user using all adb shell command
With root or ADB privilege

Dev pls move this issues on discussion tab it's supposed to be there instead
Thanks ๐Ÿ™๐Ÿ˜Š

Inure TODO List

Note: Not all tasks has to be worked on.

  • Improve analytics panel
  • Add sub analytics panel
  • Add galaxy store option in app info
  • Add my email in about section
  • Option for feedbacks right from the app
  • Word on app documentation
  • Fix media notification buttons.
  • Add Shizuku support.
  • Add proper trial info screen.
  • Patch trial vulnerability.
  • Encrypted Shared Preferences.
  • Add proper permission status dialog.
  • Add more info in batter optimization dialog.
  • Add option to skip setup panel permanently.
  • Remove device admin permissions and related elements.
  • Fix Add Shortcut in Terminal.
  • Fix Initial Command not working on Shortcut.
  • Fix Terminal windows' manager issues and crashes.
  • Add terminal command manager.
  • Add better apps data generator.
  • Fix Music bugs.
  • Fix Usage Stats data inconsistency issues.
  • Add more context to each panel?
  • Put themes under premium.
  • Fix seekbar glitches (smoothen their animations).
  • Put accent colors under premium.
  • Put transitions and arc type under premium.
  • Put shortcuts under premium.
  • Put accessibility dividers under premium.
  • Put terminal and shell preferences under premium.
  • Put trackers preferences under premium.
  • Put accessibility context menu under premium.
  • Put development preferences under premium.
  • Put uninstalled apps under premium.
  • Hide tracker dialog on non premium.
  • Put image viewer under premium.
  • Put notes editor under premium.
  • Put deep search under premium.
  • Fix corner radius going back bug.
  • Reset settings after trial period.
  • Add High Contrast theme for Light mode.
  • Add Unlocker dev signature verification.
  • Implement a valid global popup position framework and rid of view anchors.
  • Add Play Store installer detection.
  • Add notes not saved warning.
  • Fix unlocker detection issues.
  • Add option to disable tracker activities.
  • Add graph based Usage Stats panel.
  • Add app categories panel.
  • Fix app disable global state.
  • Create a local database for uninstalled apps.
  • Fix audio player issues.
  • Add dynamic buttons resizer.
  • Add option to upload apps on APKMirror.
  • Add support for xAPK files.
  • Add option to hide apps
  • Add an Inure level Audio Player.
  • Fix bottom bar not getting clipped issue.
  • Add auto unlocker detection.
  • Add global data re-fetch framework upon any runtime data mutation.
  • Make some animations smoother (app's framework needs more optimization).
  • Add sort and filter in boot manager.
  • Find source of cannot connect to main shell error.
  • Fix disabled apps indicator color on different themes.
  • Add more context in Batch
  • Add market redirect to Inure?
  • Fix missing TTF files from Extras.
  • Add application flags in App Info panel.
  • Better warning system in Preferences.
  • Fix Russian locale and app layout issues.
  • Add component manager in Boot Manager
  • Multiple item selection in various panels.
  • Add better interface for Battery Optimization.
  • Add repeat button.
  • Add option to enable context in bottom menu
  • Fix empty trackers' panel in installer section
  • Remove Inure from batch
  • Fix searched item missing bug
  • Check marshmallow Russian issue
  • Added no trackers found warning
  • Fix Marshmallow errors
  • Fix root denied loader block
  • Fix crash handler missing error report
  • Make home screen refresh after the settings has changed.
  • Add battery optimization.
  • Add DUMP permission.
  • Open HTML in XML Viewer panel.

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

724-724/app.simple.inure E/AndroidRuntime: FATAL EXCEPTION: main
    Process: app.simple.inure, PID: 724
    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
        at androidx.fragment.app.FragmentManager.checkStateLoss(FragmentManager.java:1610)
        at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1650)
        at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:341)
        at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:306)
        at app.simple.inure.extensions.fragments.ScopedFragment.openFragmentSlide(ScopedFragment.kt:389)
        at app.simple.inure.extensions.fragments.ScopedFragment.openFragmentSlide$default(ScopedFragment.kt:379)
        at app.simple.inure.ui.launcher.SplashScreen$onViewCreated$1.invokeSuspend(SplashScreen.kt:107)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:234)
        at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
        at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
        at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
        at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
        at kotlinx.coroutines.CancellableContinuationImpl.resumeUndispatched(CancellableContinuationImpl.kt:518)
        at kotlinx.coroutines.android.HandlerContext$scheduleResumeAfterDelay$$inlined$Runnable$1.run(Runnable.kt:19)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7894)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:550)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
    	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@3841fe4, Dispatchers.Main.immediate]

Battery optimization

Hi developer can you add feature to allow user control battery optimization directly from inure app?

Realme have problem on me where all list app disappeared without any trace
I was thinking such idea are possible since similar project have same feature

Thanks ๐Ÿ™๐Ÿ˜Š

Availability outside of Play?

Will the app be available outside the walled gardens of Play Store? Seeing it deems to depend on Firebase, it's unlikely to show up at F-Droid โ€“ but maybe the APK could be made available here, e.g. attached to the corresponding tagged release? Thanks in advance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.