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:
@@ -36,6 +36,7 @@ import org.kde.kdeconnect_tp.R;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.cert.Certificate;
|
import java.security.cert.Certificate;
|
||||||
|
import java.security.cert.CertificateException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
@@ -77,7 +78,7 @@ public class Device implements BaseLink.PacketReceiver {
|
|||||||
* Constructor for remembered, already-trusted devices.
|
* Constructor for remembered, already-trusted devices.
|
||||||
* Given the deviceId, it will load the other properties from SharedPreferences.
|
* 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.context = context;
|
||||||
this.settings = context.getSharedPreferences(deviceId, Context.MODE_PRIVATE);
|
this.settings = context.getSharedPreferences(deviceId, Context.MODE_PRIVATE);
|
||||||
this.deviceInfo = DeviceInfo.loadFromSettings(context, deviceId, settings);
|
this.deviceInfo = DeviceInfo.loadFromSettings(context, deviceId, settings);
|
||||||
|
@@ -15,6 +15,7 @@ import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper
|
|||||||
import org.kde.kdeconnect_tp.R
|
import org.kde.kdeconnect_tp.R
|
||||||
import java.security.cert.Certificate
|
import java.security.cert.Certificate
|
||||||
import java.security.cert.CertificateEncodingException
|
import java.security.cert.CertificateEncodingException
|
||||||
|
import java.security.cert.CertificateException
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DeviceInfo contains all the properties needed to instantiate a Device.
|
* 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()
|
* Recreates a DeviceInfo object that was persisted using saveInSettings()
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
@Throws(CertificateException::class)
|
||||||
fun loadFromSettings(context : Context, deviceId: String, settings: SharedPreferences): DeviceInfo {
|
fun loadFromSettings(context : Context, deviceId: String, settings: SharedPreferences): DeviceInfo {
|
||||||
val deviceName = settings.getString("deviceName", "unknown")!!
|
val deviceName = settings.getString("deviceName", "unknown")!!
|
||||||
val deviceType = DeviceType.fromString(settings.getString("deviceType", "desktop")!!)
|
val deviceType = DeviceType.fromString(settings.getString("deviceType", "desktop")!!)
|
||||||
|
@@ -24,6 +24,7 @@ import org.kde.kdeconnect.Plugins.Plugin;
|
|||||||
import org.kde.kdeconnect.Plugins.PluginFactory;
|
import org.kde.kdeconnect.Plugins.PluginFactory;
|
||||||
import org.kde.kdeconnect.UserInterface.ThemeUtil;
|
import org.kde.kdeconnect.UserInterface.ThemeUtil;
|
||||||
|
|
||||||
|
import java.security.cert.CertificateException;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@@ -113,9 +114,15 @@ public class KdeConnect extends Application {
|
|||||||
for (String deviceId : trustedDevices) {
|
for (String deviceId : trustedDevices) {
|
||||||
//Log.e("BackgroundService", "Loading device "+deviceId);
|
//Log.e("BackgroundService", "Loading device "+deviceId);
|
||||||
if (preferences.getBoolean(deviceId, false)) {
|
if (preferences.getBoolean(deviceId, false)) {
|
||||||
Device device = new Device(this, deviceId);
|
try {
|
||||||
devices.put(deviceId, device);
|
Device device = new Device(this, deviceId);
|
||||||
device.addPairingCallback(devicePairingCallback);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user