android-将活动结果传递到react本机模块
作者:互联网
我正在尝试使用react native对文本识别进行一些演讲.我编写了一个react模块来启动识别器意图
public class SpeechToTextModule extends ReactContextBaseJavaModule {
...
@ReactMethod
public void startListening(Callback errorCallback, Callback successCallback) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
if(getCurrentActivity() != null){
getReactApplicationContext().startActivityForResult(intent, SPEECH_REQUEST_CODE, null);
} else {
errorCallback.invoke(new NullPointerException("Activity is null"));
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data){
// control must come here
}
mainactivity看起来像这样:
public class MainActivity extends ReactActivity {
...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// how do i invoke the module function?
}
}
MainActivity从语音意图接收结果,但是我无法弄清楚如何将其传递给模块.
解决方法:
有一种方法可以达到register as Activity event listener.
将此添加到您的本机模块:
public class SpeechToTextModule
extends ReactContextBaseJavaModule
implements ActivityEventListener {
public SpeechToTextModule(ReactApplicationContext reactContext) {
super(reactContext);
reactContext.addActivityEventListener(this); //Register this native module as Activity result listener
}
@Override
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
// Here is your Activity result :)
}
@Override
public void onNewIntent(Intent intent) {
}
}
标签:react-native,react-native-android,android 来源: https://codeday.me/bug/20191108/2007717.html