5

react-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

コアの React Native リポジトリで、これとまったく同じ方法で ReactContextBaseJavaModule を使用していると思います。

https://github.com/facebook/react-native/blob/235b16d93287061a09c4624e612b5dc4f960ce47/ReactAndroid/src/main/java/com/facebook/react/modules/intent/IntentModule.java

4

1 に答える 1

3

react-native-fs には、ビルド プロセスで独自の内部の react-native 依存関係があることがわかりました。したがって、アプリ全体が react native v0.25 から構築されていたとしても、react-native-fs 自体は、使用しようとしていた API を持たない react-native v0.12 から構築されていました。これは絶対におかしいです。

于 2016-07-05T20:13:35.297 に答える