diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index fb7f4a8a4..b589d56e9 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 000000000..2b8a50fc2
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index c6a9b368a..e007d8abd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -430,7 +430,7 @@
-
+
diff --git a/app/build.gradle b/app/build.gradle
index 1ff4c6727..76116872f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,6 +12,7 @@ android {
buildFeatures {
viewBinding false
+ aidl true
}
defaultConfig {
@@ -97,12 +98,12 @@ android {
compileOptions {
coreLibraryDesugaringEnabled true
- sourceCompatibility JavaVersion.VERSION_11
- targetCompatibility JavaVersion.VERSION_11
+ sourceCompatibility JavaVersion.VERSION_17
+ targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = JavaVersion.VERSION_11
+ jvmTarget = JavaVersion.VERSION_17
}
ndkVersion '25.2.9519653'
@@ -151,6 +152,7 @@ dependencies {
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta02'
implementation 'androidx.dynamicanimation:dynamicanimation-ktx:1.0.0-alpha03'
implementation "androidx.security:security-crypto:1.1.0-alpha06"
+ implementation 'androidx.core:core-splashscreen:1.0.1'
// Google
implementation 'com.google.android.material:material:1.9.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 91c518838..e32d46dd2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -444,7 +444,7 @@
android:documentLaunchMode="intoExisting"
android:exported="true"
android:icon="@mipmap/ic_audio_player"
- android:label="Inure Mini Player"
+ android:label="@string/audio_player"
android:roundIcon="@mipmap/ic_audio_player_round"
android:theme="@style/Inure.Transparent"
android:windowSoftInputMode="adjustResize">
diff --git a/app/src/main/assets/html/changelogs.html b/app/src/main/assets/html/changelogs.html
index a98249e34..9a0e62054 100644
--- a/app/src/main/assets/html/changelogs.html
+++ b/app/src/main/assets/html/changelogs.html
@@ -13,45 +13,66 @@
(Current Version)
-
Build86
+Build87
-User Interface
-
-
- - Added new animation in various panel.
- - Added app icon in Notes Editor panel.
- - App Info grid layout can be now be adjusted separately for each layouts.
- - Added option to change text size in Notes Editor.
- - Added Share in Notes panel.
- - Added tooltips popup on various buttons of the app.
-
-
Bug Fixes
- - Fixed App Information loading indefinitely.
- - Fixed empty batch checklist.
- - Fixed showing permission switch dialog when app is not installed.
- - Fixed various issues with Installer.
+ - Fixed delayed loading when skipped loading is toggled.
+ - Fixed same warning showing two times on Splash Screen.
-Improvements
+Changes
- - Improved Inure Theme Engine.
- - Improved app's animation framework.
-
-
-Removed
-
-
- - Removed JSON spans option from Notes Editor.
+ - Changed Inure Mini Player to Audio Player.
+
+
+
+
+
+
User Interface
+
+
+ - Added new animation in various panel.
+ - Added app icon in Notes Editor panel.
+ - App Info grid layout can be now be adjusted separately for each layouts.
+
+ - Added option to change text size in Notes Editor.
+ - Added Share in Notes panel.
+ - Added tooltips popup on various buttons of the app.
+
+
+
Bug Fixes
+
+
+ - Fixed App Information loading indefinitely.
+ - Fixed empty batch checklist.
+ - Fixed showing permission switch dialog when app is not installed.
+ - Fixed various issues with Installer.
+
+
+
Improvements
+
+
+ - Improved Inure Theme Engine.
+ - Improved app's animation framework.
+
+
+
Removed
+
+
+ - Removed JSON spans option from Notes Editor.
+
+
+
+
diff --git a/app/src/main/java/app/simple/inure/activities/app/MainActivity.kt b/app/src/main/java/app/simple/inure/activities/app/MainActivity.kt
index 341d91289..a33bef999 100644
--- a/app/src/main/java/app/simple/inure/activities/app/MainActivity.kt
+++ b/app/src/main/java/app/simple/inure/activities/app/MainActivity.kt
@@ -19,13 +19,30 @@ import app.simple.inure.constants.Warnings
import app.simple.inure.crash.CrashReporter
import app.simple.inure.decorations.theme.ThemeCoordinatorLayout
import app.simple.inure.extensions.activities.BaseActivity
-import app.simple.inure.preferences.*
+import app.simple.inure.preferences.AppearancePreferences
+import app.simple.inure.preferences.DevelopmentPreferences
+import app.simple.inure.preferences.MainPreferences
+import app.simple.inure.preferences.MusicPreferences
+import app.simple.inure.preferences.TrialPreferences
import app.simple.inure.terminal.Term
import app.simple.inure.themes.manager.Theme
import app.simple.inure.themes.manager.ThemeManager
import app.simple.inure.themes.manager.ThemeUtils
import app.simple.inure.ui.launcher.SplashScreen
-import app.simple.inure.ui.panels.*
+import app.simple.inure.ui.panels.Analytics
+import app.simple.inure.ui.panels.Apps
+import app.simple.inure.ui.panels.Batch
+import app.simple.inure.ui.panels.DeviceInfo
+import app.simple.inure.ui.panels.Home
+import app.simple.inure.ui.panels.MostUsed
+import app.simple.inure.ui.panels.Music
+import app.simple.inure.ui.panels.Notes
+import app.simple.inure.ui.panels.Preferences
+import app.simple.inure.ui.panels.RecentlyInstalled
+import app.simple.inure.ui.panels.RecentlyUpdated
+import app.simple.inure.ui.panels.Search
+import app.simple.inure.ui.panels.Statistics
+import app.simple.inure.ui.panels.Uninstalled
import app.simple.inure.ui.viewers.AudioPlayerPager
import app.simple.inure.util.ActivityUtils.getTopFragment
import app.simple.inure.util.AppUtils
@@ -36,7 +53,8 @@ import app.simple.inure.util.Logger
import app.simple.inure.util.NullSafety.isNull
import com.topjohnwu.superuser.ipc.RootService
import java.time.ZonedDateTime
-import java.util.*
+import java.util.Calendar
+import java.util.TimeZone
class MainActivity : BaseActivity() {
@@ -76,6 +94,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("analytics")
.commit()
}
+
ShortcutConstants.APPS_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -84,6 +103,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("apps")
.commit()
}
+
ShortcutConstants.BATCH_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -92,6 +112,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("batch")
.commit()
}
+
ShortcutConstants.MOST_USED_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -100,6 +121,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("most_used")
.commit()
}
+
ShortcutConstants.NOTES_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -108,6 +130,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("notes")
.commit()
}
+
ShortcutConstants.RECENTLY_INSTALLED_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -116,6 +139,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("recently_installed")
.commit()
}
+
ShortcutConstants.RECENTLY_UPDATED_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -124,11 +148,13 @@ class MainActivity : BaseActivity() {
.addToBackStack("recently_updated")
.commit()
}
+
ShortcutConstants.TERMINAL_ACTION -> {
openHome()
startActivity(Intent(this, Term::class.java))
finish()
}
+
ShortcutConstants.UNINSTALLED_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -137,6 +163,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("uninstalled")
.commit()
}
+
ShortcutConstants.USAGE_STATS_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -145,6 +172,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("stats")
.commit()
}
+
ShortcutConstants.PREFERENCES_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -153,6 +181,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("preferences")
.commit()
}
+
ShortcutConstants.SEARCH_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -161,6 +190,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("search")
.commit()
}
+
ShortcutConstants.MUSIC_ACTION -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -169,6 +199,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("music")
.commit()
}
+
ShortcutConstants.AUDIO_PLAYER_ACTION -> {
if (supportFragmentManager.findFragmentByTag("audio_player_pager") == null) {
supportFragmentManager.beginTransaction()
@@ -193,6 +224,7 @@ class MainActivity : BaseActivity() {
.commit()
}
}
+
"open_device_info" -> {
openHome()
supportFragmentManager.beginTransaction()
@@ -201,6 +233,7 @@ class MainActivity : BaseActivity() {
.addToBackStack("device_info")
.commit()
}
+
IntentConstants.ACTION_UNLOCK -> {
if (packageManager.isPackageInstalled(AppUtils.unlockerPackageName)) {
if (TrialPreferences.isFullVersion()) {
@@ -233,6 +266,7 @@ class MainActivity : BaseActivity() {
.commit()
}
}
+
else -> {
if (AppUtils.isBetaFlavor()) {
supportFragmentManager.beginTransaction()
diff --git a/app/src/main/java/app/simple/inure/constants/BundleConstants.kt b/app/src/main/java/app/simple/inure/constants/BundleConstants.kt
index b6373c3fc..8b3428f3b 100644
--- a/app/src/main/java/app/simple/inure/constants/BundleConstants.kt
+++ b/app/src/main/java/app/simple/inure/constants/BundleConstants.kt
@@ -1,6 +1,7 @@
package app.simple.inure.constants
object BundleConstants {
+ const val skip = "skip"
const val state = "state"
const val size = "size"
const val keywords: String = "keywords"
diff --git a/app/src/main/java/app/simple/inure/glide/modules/AppIconModule.kt b/app/src/main/java/app/simple/inure/glide/modules/AppIconModule.kt
index 3853fdc30..961a6afd0 100644
--- a/app/src/main/java/app/simple/inure/glide/modules/AppIconModule.kt
+++ b/app/src/main/java/app/simple/inure/glide/modules/AppIconModule.kt
@@ -53,6 +53,5 @@ class AppIconModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
registry.append(AppIcon::class.java, Bitmap::class.java, AppIconLoader.Factory())
- //registry.append(AppGraphicsModel::class.java, InputStream::class.java, AppGraphicsLoader.Factory())
}
}
\ No newline at end of file
diff --git a/app/src/main/java/app/simple/inure/preferences/BehaviourPreferences.kt b/app/src/main/java/app/simple/inure/preferences/BehaviourPreferences.kt
index 81391546d..dcdb80e49 100644
--- a/app/src/main/java/app/simple/inure/preferences/BehaviourPreferences.kt
+++ b/app/src/main/java/app/simple/inure/preferences/BehaviourPreferences.kt
@@ -105,7 +105,7 @@ object BehaviourPreferences {
SharedPreferences.getSharedPreferences().edit().putBoolean(skipLoading, boolean).apply()
}
- fun isSkipLoadingMainScreenState(): Boolean {
+ fun isSkipLoading(): Boolean {
return SharedPreferences.getSharedPreferences().getBoolean(skipLoading, false)
}
diff --git a/app/src/main/java/app/simple/inure/ui/launcher/SplashScreen.kt b/app/src/main/java/app/simple/inure/ui/launcher/SplashScreen.kt
index c13e92bef..abd9a277f 100644
--- a/app/src/main/java/app/simple/inure/ui/launcher/SplashScreen.kt
+++ b/app/src/main/java/app/simple/inure/ui/launcher/SplashScreen.kt
@@ -20,6 +20,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import app.simple.inure.R
import app.simple.inure.apk.utils.PackageUtils.isPackageInstalled
+import app.simple.inure.constants.BundleConstants
import app.simple.inure.constants.Misc
import app.simple.inure.constants.Warnings
import app.simple.inure.crash.CrashReporter
@@ -75,6 +76,7 @@ class SplashScreen : ScopedFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ startPostponedEnterTransition()
intentFilter.addAction(DataLoaderService.APPS_LOADED)
intentFilter.addAction(DataLoaderService.UNINSTALLED_APPS_LOADED)
@@ -103,8 +105,6 @@ class SplashScreen : ScopedFragment() {
}
}
- startPostponedEnterTransition()
-
icon = view.findViewById(R.id.imageView)
loaderImageView = view.findViewById(R.id.loader)
daysLeft = view.findViewById(R.id.days_left)
@@ -115,7 +115,7 @@ class SplashScreen : ScopedFragment() {
icon.startAnimation(AnimationUtils.loadAnimation(requireContext(), R.anim.app_icon_animation))
}
- if (BehaviourPreferences.isSkipLoadingMainScreenState()) {
+ if (BehaviourPreferences.isSkipLoading()) {
loaderImageView.alpha = 0F
}
@@ -130,20 +130,23 @@ class SplashScreen : ScopedFragment() {
}
when {
- MainPreferences.isDisclaimerAgreed().invert() -> {
+ MainPreferences.isDisclaimerAgreed().invert() -> { // First check if disclaimer is agreed
openFragmentSlide(Disclaimer.newInstance())
}
- requireArguments().getBoolean("skip") -> {
+
+ requireArguments().getBoolean(BundleConstants.skip) -> { // Second check if setup is skipped
startLoaderService()
}
+
!checkForPermission() -> {
- if (SetupPreferences.isDontShowAgain()) {
+ if (SetupPreferences.isDontShowAgain()) { // If setup not skipped open setup
startLoaderService()
} else {
openFragmentSlide(Setup.newInstance())
}
}
- else -> {
+
+ else -> { // Load all data
startLoaderService()
}
}
@@ -277,14 +280,13 @@ class SplashScreen : ScopedFragment() {
openApp()
}
- if (BehaviourPreferences.isSkipLoadingMainScreenState()) {
- openFragmentArc(Home.newInstance(), icon)
+ if (BehaviourPreferences.isSkipLoading()) {
+ openApp()
}
}
private fun openApp() {
- if (BehaviourPreferences.isSkipLoadingMainScreenState()) return
- if (isEverythingLoaded()) {
+ if (isEverythingLoaded() || BehaviourPreferences.isSkipLoading()) {
if (MainPreferences.getLaunchCount() % 7 == 0 && StatusBarHeight.isLandscape(requireContext()).invert() && AppUtils.isPlayFlavor()) {
if (MainPreferences.isShowRateReminder()) {
requireActivity().supportFragmentManager.beginTransaction()
@@ -416,7 +418,7 @@ class SplashScreen : ScopedFragment() {
companion object {
fun newInstance(skip: Boolean): SplashScreen {
val args = Bundle()
- args.putBoolean("skip", skip)
+ args.putBoolean(BundleConstants.skip, skip)
val fragment = SplashScreen()
fragment.arguments = args
return fragment
diff --git a/app/src/main/java/app/simple/inure/ui/preferences/mainscreens/BehaviourScreen.kt b/app/src/main/java/app/simple/inure/ui/preferences/mainscreens/BehaviourScreen.kt
index 4f6d602db..0afbecf28 100644
--- a/app/src/main/java/app/simple/inure/ui/preferences/mainscreens/BehaviourScreen.kt
+++ b/app/src/main/java/app/simple/inure/ui/preferences/mainscreens/BehaviourScreen.kt
@@ -64,7 +64,7 @@ class BehaviourScreen : ScopedFragment() {
transition.setChecked(BehaviourPreferences.isTransitionOn())
animations.setChecked(BehaviourPreferences.isArcAnimationOn())
marquee.setChecked(BehaviourPreferences.isMarqueeOn())
- skipLoading.setChecked(BehaviourPreferences.isSkipLoadingMainScreenState())
+ skipLoading.setChecked(BehaviourPreferences.isSkipLoading())
setTransitionType()
setArcType()
diff --git a/app/src/main/java/app/simple/inure/viewmodels/panels/BatteryOptimizationViewModel.kt b/app/src/main/java/app/simple/inure/viewmodels/panels/BatteryOptimizationViewModel.kt
index 36f1394ed..71eb632a9 100644
--- a/app/src/main/java/app/simple/inure/viewmodels/panels/BatteryOptimizationViewModel.kt
+++ b/app/src/main/java/app/simple/inure/viewmodels/panels/BatteryOptimizationViewModel.kt
@@ -10,7 +10,6 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import app.simple.inure.apk.utils.PackageUtils
import app.simple.inure.constants.SortConstant
-import app.simple.inure.constants.Warnings
import app.simple.inure.extensions.viewmodels.RootShizukuViewModel
import app.simple.inure.models.BatteryOptimizationModel
import app.simple.inure.preferences.BatteryOptimizationPreferences
@@ -264,7 +263,6 @@ class BatteryOptimizationViewModel(application: Application) : RootShizukuViewMo
}
override fun onShellDenied() {
- warning.postValue(Warnings.getNoRootConnectionWarning())
batteryOptimizationData.postValue(ArrayList())
}
diff --git a/build.gradle b/build.gradle
index c23ac1fa9..cf1d4108e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.4.2'
+ classpath 'com.android.tools.build:gradle:8.0.0'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0'
classpath "com.autonomousapps:dependency-analysis-gradle-plugin:1.18.0"
diff --git a/gradle.properties b/gradle.properties
index ca36a32b3..40628daa8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -19,4 +19,7 @@ android.useAndroidX=true
android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
-org.gradle.unsafe.configuration-cache=true
\ No newline at end of file
+org.gradle.unsafe.configuration-cache=true
+android.defaults.buildfeatures.buildconfig=true
+android.nonTransitiveRClass=false
+android.nonFinalResIds=false
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 012d6d904..1a26ff28f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=cb87f222c5585bd46838ad4db78463a5c5f3d336e5e2b98dc7c0c586527351c2
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists