Return 至 activity 操作输入法设置后
Return to activity after Action Input Method Settings
我正在制作自定义键盘应用程序。
有一个按钮可以将用户从应用程序引导至 Input Method Settings
。
这是意图:
startActivityForResult(new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS), 2000);
现在,有没有办法让 return 用户在启用键盘后进入 activity?
编辑
有没有一种方法可以设置 BroadcastReceiver 并在用户点击警告 window 按钮时注册?然后应用程序可以调用 super.onResume() 来恢复 activity.
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 级别
因此,我只是在启动“设置”菜单的同时生成一个侦听更改的 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);
}
}
我正在制作自定义键盘应用程序。
有一个按钮可以将用户从应用程序引导至 Input Method Settings
。
这是意图:
startActivityForResult(new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS), 2000);
现在,有没有办法让 return 用户在启用键盘后进入 activity?
编辑
有没有一种方法可以设置 BroadcastReceiver 并在用户点击警告 window 按钮时注册?然后应用程序可以调用 super.onResume() 来恢复 activity.
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 级别
因此,我只是在启动“设置”菜单的同时生成一个侦听更改的 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);
}
}