Merge branch 'uninstall' into 'master'
Set installer package name to privext if using that See merge request !454
This commit is contained in:
commit
a9a37747cb
@ -1,10 +1,12 @@
|
||||
package org.fdroid.fdroid.compat;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import org.fdroid.fdroid.installer.PrivilegedInstaller;
|
||||
import org.fdroid.fdroid.Utils;
|
||||
|
||||
public class PackageManagerCompat {
|
||||
@ -12,10 +14,20 @@ public class PackageManagerCompat {
|
||||
private static final String TAG = "PackageManagerCompat";
|
||||
|
||||
@TargetApi(11)
|
||||
public static void setInstaller(PackageManager mPm, String packageName) {
|
||||
public static void setInstaller(Context context, PackageManager mPm, String packageName) {
|
||||
if (Build.VERSION.SDK_INT < 11) return;
|
||||
try {
|
||||
mPm.setInstallerPackageName(packageName, "org.fdroid.fdroid");
|
||||
/*
|
||||
* Starting with 7.0 (API 24), we're using PackageInstaller APIs
|
||||
* to install and uninstall apps via the privileged extension.
|
||||
* That enforces the uninstaller being the same as the installer,
|
||||
* so set the package name to that.
|
||||
*/
|
||||
if (PrivilegedInstaller.isDefault(context)) {
|
||||
mPm.setInstallerPackageName(packageName, "org.fdroid.fdroid.privileged");
|
||||
} else {
|
||||
mPm.setInstallerPackageName(packageName, "org.fdroid.fdroid");
|
||||
}
|
||||
Utils.debugLog(TAG, "Installer package name for " + packageName + " set successfully");
|
||||
} catch (Exception e) {
|
||||
// Many problems can occur:
|
||||
|
@ -336,8 +336,9 @@ public class InstallManagerService extends Service {
|
||||
case Installer.ACTION_INSTALL_COMPLETE:
|
||||
appUpdateStatusManager.updateApk(downloadUrl, AppUpdateStatusManager.Status.Installed, null);
|
||||
Apk apkComplete = appUpdateStatusManager.getApk(downloadUrl);
|
||||
|
||||
if (apkComplete != null) {
|
||||
PackageManagerCompat.setInstaller(getPackageManager(), apkComplete.packageName);
|
||||
PackageManagerCompat.setInstaller(context, getPackageManager(), apkComplete.packageName);
|
||||
}
|
||||
localBroadcastManager.unregisterReceiver(this);
|
||||
break;
|
||||
|
@ -34,6 +34,7 @@ import android.util.Log;
|
||||
|
||||
import org.fdroid.fdroid.Preferences;
|
||||
import org.fdroid.fdroid.R;
|
||||
import org.fdroid.fdroid.compat.PackageManagerCompat;
|
||||
import org.fdroid.fdroid.data.Apk;
|
||||
import org.fdroid.fdroid.privileged.IPrivilegedCallback;
|
||||
import org.fdroid.fdroid.privileged.IPrivilegedService;
|
||||
@ -394,6 +395,10 @@ public class PrivilegedInstaller extends Installer {
|
||||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* Set installer to the privileged extension
|
||||
*/
|
||||
PackageManagerCompat.setInstaller(context, context.getPackageManager(), apk.packageName);
|
||||
Intent serviceIntent = new Intent(PRIVILEGED_EXTENSION_SERVICE_INTENT);
|
||||
serviceIntent.setPackage(PRIVILEGED_EXTENSION_PACKAGE_NAME);
|
||||
context.getApplicationContext().bindService(serviceIntent, mServiceConnection,
|
||||
|
Loading…
x
Reference in New Issue
Block a user