EXTRA_CANONICAL_URL instance must always be a String
This commit is contained in:
parent
b316eab85d
commit
021d5cc1ff
@ -47,7 +47,7 @@ public class DefaultInstaller extends Installer {
|
||||
|
||||
Intent installIntent = new Intent(context, DefaultInstallerActivity.class);
|
||||
installIntent.setAction(DefaultInstallerActivity.ACTION_INSTALL_PACKAGE);
|
||||
installIntent.putExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL, canonicalUri);
|
||||
installIntent.putExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL, canonicalUri.toString());
|
||||
installIntent.putExtra(Installer.EXTRA_APK, apk);
|
||||
installIntent.setData(localApkUri);
|
||||
|
||||
|
@ -67,7 +67,7 @@ public class DefaultInstallerActivity extends FragmentActivity {
|
||||
installer = new DefaultInstaller(this, apk);
|
||||
if (ACTION_INSTALL_PACKAGE.equals(action)) {
|
||||
Uri localApkUri = intent.getData();
|
||||
canonicalUri = intent.getParcelableExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL);
|
||||
canonicalUri = Uri.parse(intent.getStringExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL));
|
||||
installPackage(localApkUri);
|
||||
} else if (ACTION_UNINSTALL_PACKAGE.equals(action)) {
|
||||
uninstallPackage(apk.packageName);
|
||||
|
@ -51,7 +51,7 @@ public class FileInstaller extends Installer {
|
||||
protected void installPackageInternal(Uri localApkUri, Uri canonicalUri) {
|
||||
Intent installIntent = new Intent(context, FileInstallerActivity.class);
|
||||
installIntent.setAction(FileInstallerActivity.ACTION_INSTALL_FILE);
|
||||
installIntent.putExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL, canonicalUri);
|
||||
installIntent.putExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL, canonicalUri.toString());
|
||||
installIntent.putExtra(Installer.EXTRA_APK, apk);
|
||||
installIntent.setData(localApkUri);
|
||||
|
||||
|
@ -58,10 +58,10 @@ public class FileInstallerActivity extends FragmentActivity {
|
||||
Intent intent = getIntent();
|
||||
String action = intent.getAction();
|
||||
localApkUri = intent.getData();
|
||||
canonicalUri = intent.getParcelableExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL);
|
||||
apk = intent.getParcelableExtra(Installer.EXTRA_APK);
|
||||
installer = new FileInstaller(this, apk);
|
||||
if (ACTION_INSTALL_FILE.equals(action)) {
|
||||
canonicalUri = Uri.parse(intent.getStringExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL));
|
||||
if (hasStoragePermission()) {
|
||||
installPackage(localApkUri, canonicalUri, apk);
|
||||
} else {
|
||||
@ -69,6 +69,7 @@ public class FileInstallerActivity extends FragmentActivity {
|
||||
act = 1;
|
||||
}
|
||||
} else if (ACTION_UNINSTALL_FILE.equals(action)) {
|
||||
canonicalUri = null;
|
||||
if (hasStoragePermission()) {
|
||||
uninstallPackage(apk);
|
||||
} else {
|
||||
|
@ -10,10 +10,10 @@ import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.IBinder;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.io.filefilter.WildcardFileFilter;
|
||||
import org.fdroid.fdroid.AppUpdateStatusManager;
|
||||
@ -68,7 +68,8 @@ import java.io.IOException;
|
||||
* <li>for a {@code String} ID, use {@code canonicalUrl}, {@link Uri#toString()}, or
|
||||
* {@link Intent#getDataString()}
|
||||
* <li>for an {@code int} ID, use {@link String#hashCode()} or {@link Uri#hashCode()}
|
||||
* <li>for an {@link Intent} extra, use {@link org.fdroid.fdroid.net.Downloader#EXTRA_CANONICAL_URL}
|
||||
* <li>for an {@link Intent} extra, use {@link org.fdroid.fdroid.net.Downloader#EXTRA_CANONICAL_URL} and include a
|
||||
* {@link String} instance
|
||||
* </ul></p>
|
||||
* The implementations of {@link Uri#toString()} and {@link Intent#getDataString()} both
|
||||
* include caching of the generated {@code String}, so it should be plenty fast.
|
||||
|
@ -74,7 +74,7 @@ public class InstallerService extends JobIntentService {
|
||||
|
||||
if (ACTION_INSTALL.equals(intent.getAction())) {
|
||||
Uri uri = intent.getData();
|
||||
Uri canonicalUri = intent.getParcelableExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL);
|
||||
Uri canonicalUri = Uri.parse(intent.getStringExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL));
|
||||
installer.installPackage(uri, canonicalUri);
|
||||
} else if (ACTION_UNINSTALL.equals(intent.getAction())) {
|
||||
installer.uninstallPackage();
|
||||
@ -124,7 +124,7 @@ public class InstallerService extends JobIntentService {
|
||||
Intent intent = new Intent(context, InstallerService.class);
|
||||
intent.setAction(ACTION_INSTALL);
|
||||
intent.setData(localApkUri);
|
||||
intent.putExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL, canonicalUri);
|
||||
intent.putExtra(org.fdroid.fdroid.net.Downloader.EXTRA_CANONICAL_URL, canonicalUri.toString());
|
||||
intent.putExtra(Installer.EXTRA_APK, apk);
|
||||
enqueueWork(context, intent);
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package org.fdroid.fdroid.net;
|
||||
|
||||
import android.net.Uri;
|
||||
import androidx.annotation.NonNull;
|
||||
import android.text.format.DateUtils;
|
||||
import androidx.annotation.NonNull;
|
||||
import org.fdroid.fdroid.ProgressListener;
|
||||
import org.fdroid.fdroid.Utils;
|
||||
|
||||
@ -34,6 +34,8 @@ public abstract class Downloader {
|
||||
/**
|
||||
* Unique ID used to represent this specific package's install process,
|
||||
* including {@link android.app.Notification}s, also known as {@code canonicalUrl}.
|
||||
* Careful about types, this should always be a {@link String}, so it can
|
||||
* be handled on the receiving side by {@link android.content.Intent#getStringArrayExtra(String)}.
|
||||
*
|
||||
* @see org.fdroid.fdroid.installer.InstallManagerService
|
||||
* @see android.content.Intent#EXTRA_ORIGINATING_URI
|
||||
|
Loading…
x
Reference in New Issue
Block a user