【问题标题】:Return to activity after Action Input Method Settings操作输入法设置后返回活动
【发布时间】:2015-07-19 06:14:56
【问题描述】:

我正在制作一个自定义键盘应用程序。
有一个按钮可将用户从应用程序引导至Input Method Settings
这是意图:

startActivityForResult(new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS), 2000);

现在,有没有办法让用户在启用键盘后返回活动?
编辑
当用户单击警告窗口上的“确定”按钮时,有没有办法设置广播接收器并注册?然后应用可以调用 super.onResume() 来恢复活动。

【问题讨论】:

  • 它应该会自动回到您的活动中
  • 它没有。当我在“键盘和输入法”中检查键盘时,会显示一条警告,然后当我单击确定时,它会停留在设置中。当我按下返回按钮时,我只能返回活动。
  • 嗨@filipst 你能解决这个问题吗?

标签: android android-intent android-softkeyboard android-input-method


【解决方案1】:
startActivityForResult(new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK).addFlags
                (Intent.FLAG_ACTIVITY_CLEAR_TASK), 2000);

这应该可以,但请注意 Intent.FLAG_ACTIVITY_CLEAR_TASK 请求 >=11 api 级别

【讨论】:

  • 恐怕不行。启用键盘后仍然没有返回应用程序。
  • 是的,但是如果您单击该菜单上的后退按钮,您应该转到您的活动,而不是设置,如果您想通过仅选择来关闭它,恐怕没有办法那
  • 返回操作是使用后退按钮。但是我在商店的一个应用程序中看到它可以完成。我只是不知道怎么做。
  • @filipst 嘿,你知道我们如何确认用户选择了我们的键盘并按下了确定按钮吗?
  • @Akhil Gite 检查我接受的答案。它正在工作。
【解决方案2】:

所以我只是简单地生成了一个 IntentService,它在启动“设置”菜单的同时侦听更改。我相信这也是 SwiftKey 的做法。

public class MyService extends IntentService {

    /**
     * Creates an IntentService
     */
    public MyService() {
        super("MyService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        String packageLocal = getPackageName();
        boolean isInputDeviceEnabled = false;
        while(!isInputDeviceEnabled) {
            InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
            List<InputMethodInfo> list = inputMethodManager.getEnabledInputMethodList();

            // check if our keyboard is enabled as input method
            for(InputMethodInfo inputMethod : list) {
                String packageName = inputMethod.getPackageName();
                if(packageName.equals(packageLocal)) {
                    isInputDeviceEnabled = true;
                }
            }
        }

        // open activity
        Intent newIntent = new Intent(this, MainActivity.class);
        newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(newIntent);
    }
}

【讨论】:

  • 我如何知道用户是否禁用了我的键盘?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
相关资源
最近更新 更多