mirror of
https://github.com/f-droid/fdroidclient.git
synced 2026-02-20 08:08:04 -05:00
Merge branch '2759-install-location' into 'master'
Set install location to AUTO for SessionInstaller Closes #2759 See merge request fdroid/fdroidclient!1361
This commit is contained in:
@@ -7,12 +7,14 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.IntentSender;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageInstaller;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.WorkerThread;
|
||||
import androidx.core.content.ContextCompat;
|
||||
@@ -71,16 +73,7 @@ public class SessionInstallManager extends BroadcastReceiver {
|
||||
public void install(App app, Apk apk, Uri localApkUri, Uri canonicalUri) {
|
||||
DocumentFile documentFile = ObjectsCompat.requireNonNull(DocumentFile.fromSingleUri(context, localApkUri));
|
||||
long size = documentFile.length();
|
||||
PackageInstaller.SessionParams params =
|
||||
new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL);
|
||||
params.setAppPackageName(app.packageName);
|
||||
params.setSize(size);
|
||||
if (Build.VERSION.SDK_INT >= 31) {
|
||||
params.setRequireUserAction(PackageInstaller.SessionParams.USER_ACTION_NOT_REQUIRED);
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= 33) {
|
||||
params.setPackageSource(PackageInstaller.PACKAGE_SOURCE_STORE);
|
||||
}
|
||||
PackageInstaller.SessionParams params = getSessionParams(app, size);
|
||||
PackageInstaller installer = context.getPackageManager().getPackageInstaller();
|
||||
try {
|
||||
int sessionId = installer.createSession(params);
|
||||
@@ -101,6 +94,22 @@ public class SessionInstallManager extends BroadcastReceiver {
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static PackageInstaller.SessionParams getSessionParams(App app, long size) {
|
||||
PackageInstaller.SessionParams params =
|
||||
new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL);
|
||||
params.setAppPackageName(app.packageName);
|
||||
params.setSize(size);
|
||||
params.setInstallLocation(PackageInfo.INSTALL_LOCATION_AUTO);
|
||||
if (Build.VERSION.SDK_INT >= 31) {
|
||||
params.setRequireUserAction(PackageInstaller.SessionParams.USER_ACTION_NOT_REQUIRED);
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= 33) {
|
||||
params.setPackageSource(PackageInstaller.PACKAGE_SOURCE_STORE);
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
public void uninstall(String packageName) {
|
||||
PackageInstaller installer = context.getPackageManager().getPackageInstaller();
|
||||
|
||||
Reference in New Issue
Block a user