diff --git a/app/src/main/java/io/github/sspanak/tt9/hacks/InputType.java b/app/src/main/java/io/github/sspanak/tt9/hacks/InputType.java
index 3a8d8054..009982e1 100644
--- a/app/src/main/java/io/github/sspanak/tt9/hacks/InputType.java
+++ b/app/src/main/java/io/github/sspanak/tt9/hacks/InputType.java
@@ -41,6 +41,11 @@ public class InputType extends StandardInputType {
}
+ public boolean isDumbPhoneDialer(Context context) {
+ return field.packageName.equals("com.android.dialer") && !DeviceInfo.noKeyboard(context);
+ }
+
+
public boolean isLgX100SDialer() {
int imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_ENTER_ACTION;
return
@@ -114,11 +119,13 @@ public class InputType extends StandardInputType {
* the initial GitHub issue about Qin F21 Pro+
* the PR about calculators
* Dialer not detected correctly on LG X100S
+ * [NO ISSUE] On touchscreen-only phones, in the Dialer app, we can't switch to passthrough, because
+ * they don't have a physical keyboard.
*/
- protected boolean isSpecialNumeric() {
+ protected boolean isSpecialNumeric(Context context) {
return
field.packageName.contains("com.android.calculator") // there is "calculator2", hence the contains()
- || field.packageName.equals("com.android.dialer")
+ || isDumbPhoneDialer(context)
|| isLgX100SDialer();
}
diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java
index 2b392f85..7acdb934 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ime/TypingHandler.java
@@ -254,7 +254,7 @@ public abstract class TypingHandler extends KeyPadHandler {
return InputMode.MODE_PASSTHROUGH;
}
- allowedInputModes = inputType.determineInputModes();
+ allowedInputModes = inputType.determineInputModes(this);
return InputModeValidator.validateMode(settings.getInputMode(), allowedInputModes);
}
diff --git a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/StandardInputType.java b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/StandardInputType.java
index 33596ebf..be10af2e 100644
--- a/app/src/main/java/io/github/sspanak/tt9/ime/helpers/StandardInputType.java
+++ b/app/src/main/java/io/github/sspanak/tt9/ime/helpers/StandardInputType.java
@@ -1,5 +1,6 @@
package io.github.sspanak.tt9.ime.helpers;
+import android.content.Context;
import android.text.InputType;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
@@ -65,7 +66,7 @@ abstract public class StandardInputType {
}
- abstract protected boolean isSpecialNumeric();
+ abstract protected boolean isSpecialNumeric(Context context);
public boolean isEmail() {
@@ -126,7 +127,7 @@ abstract public class StandardInputType {
*
* @return ArrayList
*/
- public ArrayList determineInputModes() {
+ public ArrayList determineInputModes(Context context) {
ArrayList allowedModes = new ArrayList<>();
if (field == null) {
@@ -137,7 +138,7 @@ abstract public class StandardInputType {
// Calculators (only 0-9 and math) and Dialer (0-9, "#" and "*") fields
// handle all input themselves, so we are supposed to pass through all key presses.
// Note: A Dialer field is not a Phone number field.
- if (isSpecialNumeric()) {
+ if (isSpecialNumeric(context)) {
allowedModes.add(InputMode.MODE_PASSTHROUGH);
return allowedModes;
}