2016-06-27 18 views
5

Innerhalb einer Gabel reagieren-native-fs (https://github.com/johanneslumpe/react-native-fs), bin ich versucht, diesen Code hinzuzufügen:Der Versuch, ein openfile Methode hinzufügen Native nach Reaktion, rufen nicht getCurrentActivity

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)); 
     } 
     } 

Aber als ich bauen es, bekomme ich diesen Fehler:

.../android/src/main/java/com/rnfs/RNFSManager.java:138: error: cannot find symbol 
     Activity currentActivity = getCurrentActivity(); 
            ^
    symbol: method getCurrentActivity() 
1 error 

ich glaube, ich bin die ReactContextBaseJavaModule auf genau die gleiche Art und Weise wie diese verwendet wird, im Kern Reagieren Mutter Repo:

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

+0

nach dem Quellcode: https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java sollte dies funktionieren! Stellen Sie sicher, dass Sie die neueste Version verwenden, indem Sie die Datei "gregle.build" überprüfen und eine Bereinigung für das Projekt durchführen. –

Antwort

3

Es stellt sich heraus, dass reactive-native-fs in seinem Build-Prozess eine eigene interne reaktive native Abhängigkeit hat. Obwohl sich die gesamte App auf reaktives natives v0.25 stützte, baute reactive-native-fs sich auf reaktives natives v0.12 auf, das nicht die APIs enthält, die ich verwenden wollte. Das ist absolut verrückt.

+0

Wie haben Sie überprüft, dass reactive-native-fs eine andere Version von reactive native verwendet? und wenn Sie in der Lage waren, dies zu lösen, sehe ich ein ähnliches Problem mit react-native-linkedin-Login. https://github.com/jodybrewster/react-native-linkedin-login – rubish

+0

Der react-native-fs-Ordner in node_modules hat eine package.json, die eine spezifische Version für react-native hatte. Ich änderte das auf * auf einer Gabel und reichte eine PR ein. – freyley

+0

Link zur PR? Ich habe das gleiche Problem. –