微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android – 用户启用输入法后关闭IME设置活动

如何在用户启用特定IME(或者可能只是任何ime,如果这是唯一的可能性)之后关闭IME设置活动(ACTION_INPUT_METHOD_SETTINGS),就像Google键盘一样.

我试过了两个:

Intent enableIntent = new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS);
        //enableIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        activity.startActivityForResult(enableIntent,0);

和:

Intent enableIntent = new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS);
        enableIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(enableIntent);

但是一旦选择/启用项目,它就无法返回到调用活动.

谷歌键盘打开IME输入设置屏幕,一旦启用键盘(单击复选框),设置活动将关闭,用户将返回到先前的向导活动.

解决方法

我也很难尝试解决这个问题.直到我意识到我可以检查AOSP实施 here.具体来说,检查 SetupWizardActivity.对我来说,看起来是谷歌旋转了一个Handler,它将对该州进行民意调查.具体来说,尝试按照SettingsPoolingHandler#handleMessage

特别:

step1.setAction(new Runnable() {
        @Override
        public void run() {
            invokeLanguageAndInputSettings();
            handler.startPollingImeSettings();
        }
    });


    public void startPollingImeSettings() {
        sendMessageDelayed(obtainMessage(MSG_POLLING_IME_SETTINGS),IME_SETTINGS_POLLING_INTERVAL);
    }

    @Override
    public void handleMessage(final Message msg) {
        final SetupWizardActivity setupWizardActivity = getownerInstance();
        if (setupWizardActivity == null) {
            return;
        }
        switch (msg.what) {
        case MSG_POLLING_IME_SETTINGS:
            if (UncachedInputMethodManagerUtils.isThisImeEnabled(setupWizardActivity,mImmInHandler)) {
                setupWizardActivity.invokeSetupWizardOfThisIme();
                return;
            }
            startPollingImeSettings();
            break;
        }
    }


    void invokeSetupWizardOfThisIme() {
       final Intent intent = new Intent();
       intent.setClass(this,SetupWizardActivity.class);
       intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
               | Intent.FLAG_ACTIVITY_SINGLE_TOP
               | Intent.FLAG_ACTIVITY_CLEAR_TOP);
       startActivity(intent);
       mNeedsToAdjustStepNumberToSystemState = true;
   }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐