如何在用户启用特定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);
但是一旦选择/启用项目,它就无法返回到调用活动.
解决方法
我也很难尝试解决这个问题.直到我意识到我可以检查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 举报,一经查实,本站将立刻删除。