2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-31 22:25:08 +00:00

Fix crash in loadRememberedDevicesFromSettings

This commit is contained in:
Albert Vaca Cintora
2023-07-29 11:38:46 +02:00
parent 4da0599f0e
commit e769a512eb
3 changed files with 14 additions and 4 deletions

View File

@@ -36,6 +36,7 @@ import org.kde.kdeconnect_tp.R;
import java.io.IOException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.util.Collection;
import java.util.List;
import java.util.Vector;
@@ -77,7 +78,7 @@ public class Device implements BaseLink.PacketReceiver {
* Constructor for remembered, already-trusted devices.
* Given the deviceId, it will load the other properties from SharedPreferences.
*/
Device(@NonNull Context context, @NonNull String deviceId) {
Device(@NonNull Context context, @NonNull String deviceId) throws CertificateException {
this.context = context;
this.settings = context.getSharedPreferences(deviceId, Context.MODE_PRIVATE);
this.deviceInfo = DeviceInfo.loadFromSettings(context, deviceId, settings);

View File

@@ -15,6 +15,7 @@ import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper
import org.kde.kdeconnect_tp.R
import java.security.cert.Certificate
import java.security.cert.CertificateEncodingException
import java.security.cert.CertificateException
/**
* DeviceInfo contains all the properties needed to instantiate a Device.
@@ -70,6 +71,7 @@ class DeviceInfo(
* Recreates a DeviceInfo object that was persisted using saveInSettings()
*/
@JvmStatic
@Throws(CertificateException::class)
fun loadFromSettings(context : Context, deviceId: String, settings: SharedPreferences): DeviceInfo {
val deviceName = settings.getString("deviceName", "unknown")!!
val deviceType = DeviceType.fromString(settings.getString("deviceType", "desktop")!!)

View File

@@ -24,6 +24,7 @@ import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect.UserInterface.ThemeUtil;
import java.security.cert.CertificateException;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -113,9 +114,15 @@ public class KdeConnect extends Application {
for (String deviceId : trustedDevices) {
//Log.e("BackgroundService", "Loading device "+deviceId);
if (preferences.getBoolean(deviceId, false)) {
try {
Device device = new Device(this, deviceId);
devices.put(deviceId, device);
device.addPairingCallback(devicePairingCallback);
} catch (CertificateException e) {
Log.w("KdeConnect", "Couldn't load the certificate for a remembered device. Removing from trusted list.");
e.printStackTrace();
preferences.edit().remove(deviceId).apply();
}
}
}
}