如何从 IME 启动结果的活动



我正在开发一个应用程序,它应该向启动意图的应用程序返回一些文本。

但启动意向的应用是 IME/软键盘。因此StartActivityForResult不可用,因为 IME 是一项服务。

我怎样才能做到这一点?

到目前为止我得到了什么:

键盘:

final Intent intent = new Intent("com.example.helloworld.GETTEXT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.putExtra("keyboard", true);
startActivity(intent);

其他应用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Bundle extras = getIntent().getExtras();
    if (extras == null){                
        return;
    } else {
        finish();
    }
}
@Override
public void finish() {
    Intent data = new Intent();
    data.putExtra("test", "PASSED");
    setResult(RESULT_OK, data);
    super.finish();
}

您可以使用ResultReceiver .看看这个例子,它很清楚地解释了它是如何工作的。

你可以使用ResultReceiver来思考。

ResultReceiver lReceiver = new KeyboardResultReceiver(aListener);
final Intent intent = new Intent("com.example.helloworld.GETTEXT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.putExtra(EXTRA_RESULT_RECIEVER, lReceiver);
intent.putExtra("keyboard", true);
startActivity(intent);
private static final class KeyboardResultReceiver extends ResultReceiver {
    public FileUploadResultReceiver() {
    }
    @Override
    protected void onReceiveResult(int aResultCode, Bundle aResultData) {
            //Do your thing here you can also use the bundle for your data transmission
    }
}

相关内容

  • 没有找到相关文章

最新更新