Попытка добавить метод openFile в React Native, не может вызвать getCurrentActivity
Я пытаюсь добавить код в ответвление native-fs ( https://github.com/johanneslumpe/react-native-fs):
public class RNFSManager extends ReactContextBaseJavaModule {
public RNFSManager(ReactApplicationContext reactContext) {
super(reactContext);
}
@ReactMethod
public void openFile(String filepath, Callback callback) {
try {
File file = new File(filepath);
MimeTypeMap myMime = MimeTypeMap.getSingleton();
Intent newIntent = new Intent(Intent.ACTION_VIEW);
String mimeType = myMime.getMimeTypeFromExtension(fileExt(filepath).substring(1));
newIntent.setDataAndType(Uri.fromFile(file), mimeType);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Activity currentActivity = getCurrentActivity();
if (currentActivity != null) {
currentActivity.startActivity(newIntent);
} else {
this.getReactApplicationContext().startActivity(newIntent);
}
} catch (Exception ex) {
ex.printStackTrace();
callback.invoke(makeErrorPayload(ex));
}
}
Но когда я его создаю, я получаю эту ошибку:
.../android/src/main/java/com/rnfs/RNFSManager.java:138: error: cannot find symbol
Activity currentActivity = getCurrentActivity();
^
symbol: method getCurrentActivity()
1 error
Я думаю, что я использую ReactContextBaseJavaModule точно так же, как это, в основном репозитории React Native:
1 ответ
Решение
Оказывается, что реакция-native-fs имеет собственную внутреннюю реакцию-родную зависимость в процессе сборки. Таким образом, несмотря на то, что все приложение создавалось на основе собственного протокола response v0.25, реактивная-native-fs создавалась на основе собственной версии response-native v0.12, в которой нет API-интерфейсов, которые я пытался использовать. Это абсолютно чокнутый.