2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-28 12:47:43 +00:00

Fix crash on Android 14+

ENABLED_INPUT_METHODS can't be read anymore
This commit is contained in:
Albert Vaca Cintora 2024-10-02 07:56:18 +02:00
parent 592b8a74a7
commit 63d1d15c4f
No known key found for this signature in database

View File

@ -7,6 +7,7 @@
package org.kde.kdeconnect.Plugins.RemoteKeyboardPlugin; package org.kde.kdeconnect.Plugins.RemoteKeyboardPlugin;
import android.app.Activity; import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.SystemClock; import android.os.SystemClock;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
@ -18,6 +19,8 @@ import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.ExtractedText; import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest; import android.view.inputmethod.ExtractedTextRequest;
import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import androidx.annotation.DrawableRes; import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -33,7 +36,7 @@ import org.kde.kdeconnect.UserInterface.StartActivityAlertDialogFragment;
import org.kde.kdeconnect_tp.R; import org.kde.kdeconnect_tp.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Objects; import java.util.List;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
@PluginFactory.LoadablePlugin @PluginFactory.LoadablePlugin
@ -414,7 +417,14 @@ public class RemoteKeyboardPlugin extends Plugin implements SharedPreferences.On
@Override @Override
public boolean checkRequiredPermissions() { public boolean checkRequiredPermissions() {
return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS).contains("org.kde.kdeconnect_tp"); InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
List<InputMethodInfo> inputMethodList = inputMethodManager.getEnabledInputMethodList();
for (InputMethodInfo info : inputMethodList) {
if ("org.kde.kdeconnect_tp".equals(info.getPackageName())) {
return true;
}
}
return false;
} }
@Override @Override