UniModule 里如何 startActivityForResult
时间: 2024-01-09 22:52:47 浏览: 23
在 UniModule 中,可以通过 `UMNativeModule` 类来实现 `startActivityForResult` 的功能。具体步骤如下:
1. 在 `UMNativeModule` 的子类中定义一个方法,例如 `startActivityForResult`,并使用 `@UMMethod` 注解来标识该方法为一个 Native 方法。
```java
@UMMethod
public void startActivityForResult(String activityName, int requestCode) {
Activity currentActivity = getCurrentActivity();
if (currentActivity == null) {
return;
}
Intent intent = new Intent(currentActivity, Class.forName(activityName));
currentActivity.startActivityForResult(intent, requestCode);
}
```
2. 在 React Native 端,通过 `NativeModules` 访问该方法,并传递需要启动的 Activity 类名和请求码。
```javascript
import { NativeModules } from 'react-native';
const { MyModule } = NativeModules;
MyModule.startActivityForResult('com.example.MyActivity', 123);
```
这样就可以启动一个新的 Activity,并等待该 Activity 返回结果了。当新的 Activity 被销毁时,会回调 `onActivityResult` 方法,可以在该方法中处理返回的结果。
```java
@Override
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
if (requestCode == 123 && resultCode == Activity.RESULT_OK) {
// 处理返回的结果
}
}
```
注意,在 `UMNativeModule` 的子类中需要实现 `UMActivityResultListener` 接口,并在 `onActivityResult` 方法中调用 `UMNativeModuleHelper.onActivityResult` 方法来通知 React Native 端处理返回结果。