diff --git a/common/src/main/java/com/itsaky/androidide/syntax/colorschemes/DynamicColorScheme.kt b/common/src/main/java/com/itsaky/androidide/syntax/colorschemes/DynamicColorScheme.kt index 92e9ecd24..7f7e0a634 100644 --- a/common/src/main/java/com/itsaky/androidide/syntax/colorschemes/DynamicColorScheme.kt +++ b/common/src/main/java/com/itsaky/androidide/syntax/colorschemes/DynamicColorScheme.kt @@ -18,7 +18,6 @@ package com.itsaky.androidide.syntax.colorschemes import android.content.Context -import com.google.android.material.elevation.SurfaceColors import com.itsaky.androidide.common.R.attr import com.itsaky.androidide.utils.isSystemInDarkMode import com.itsaky.androidide.utils.resolveAttr diff --git a/common/src/main/java/com/itsaky/androidide/utils/ApkInstaller.kt b/common/src/main/java/com/itsaky/androidide/utils/ApkInstaller.kt index c927dab26..a59d886a3 100644 --- a/common/src/main/java/com/itsaky/androidide/utils/ApkInstaller.kt +++ b/common/src/main/java/com/itsaky/androidide/utils/ApkInstaller.kt @@ -19,12 +19,13 @@ package com.itsaky.androidide.utils import android.annotation.SuppressLint import android.content.Context +import android.content.Intent import android.content.IntentSender import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller.Session import android.content.pm.PackageInstaller.SessionCallback import android.text.TextUtils -import com.blankj.utilcode.util.IntentUtils +import androidx.core.content.FileProvider import com.itsaky.androidide.tasks.executeAsync import java.io.File import java.io.IOException @@ -44,7 +45,7 @@ object ApkInstaller { * * @param context The context. * @param sender The componenent which is requesting the installation. This component receives the - * installation result. + * installation result. * @param apk The APK file to install. */ @JvmStatic @@ -53,15 +54,26 @@ object ApkInstaller { log.error("File is not an APK:", apk) return } - + log.info("Installing APK:", apk) if (isMiui() || DEBUG_FALLBACK_INSTALLER) { log.warn( "Cannot use session-based installer on this device. Falling back to intent-based installer." ) - IntentUtils.getInstallAppIntent(apk)?.let { context.startActivity(it) } - ?: log.warn("Cannot start package installer intent. Unknown error occurred.") + + @Suppress("DEPRECATION") val intent = Intent(Intent.ACTION_INSTALL_PACKAGE) + val authority = "${context.packageName}.providers.fileprovider" + val uri = FileProvider.getUriForFile(context, authority, apk) + intent.setDataAndType(uri, "application/vnd.android.package-archive") + intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_NEW_TASK + + try { + context.startActivity(intent) + } catch (e: Exception) { + log.warn("Failed to start installation intent", e.message) + } + return } diff --git a/editor/src/main/java/com/itsaky/androidide/editor/ui/BaseEditorWindow.java b/editor/src/main/java/com/itsaky/androidide/editor/ui/BaseEditorWindow.java index 649194940..64b04b595 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/ui/BaseEditorWindow.java +++ b/editor/src/main/java/com/itsaky/androidide/editor/ui/BaseEditorWindow.java @@ -28,13 +28,9 @@ import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; - import androidx.annotation.NonNull; - -import com.blankj.utilcode.util.SizeUtils; import com.itsaky.androidide.resources.R; import com.itsaky.androidide.utils.ResourceUtilsKt; - import io.github.rosemoe.sora.widget.base.EditorPopupWindow; /** @@ -82,8 +78,8 @@ public abstract class BaseEditorWindow extends AbstractPopupWindow { text.setFocusable(false); text.setPaddingRelative(dp8, dp4, dp8, dp4); text.setLayoutParams( - new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); return text; }