2016-06-27 1 views
5

Wewnątrz rozwidleniu reagować-native fs (https://github.com/johanneslumpe/react-native-fs), jestem próbuje dodać ten kod:Próba dodać metodę openFile reagować rodzimymi, nie można nazwać 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)); 
     } 
     } 

Ale kiedy budować, otrzymuję ten błąd:

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

myślę Używam ReactContextBaseJavaModule w dokładnie taki sam sposób, jak to, w rdzeniu React Native repo:

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

+0

zgodnie z kodem źródłowym: https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java to powinno działać! upewnij się, że korzystasz z najnowszej wersji, sprawdzając gradle.build i czyść projekt. –

Odpowiedz

3

Okazuje się, że reagują-Native-FS ma własną wewnętrzną reagować natywną zależność w procesie budowania. Tak więc mimo, że cała aplikacja została zbudowana z reakcji na natywną wersję v0.25, funkcja-native-fs budowała się z wersji natywnej w stosunku do wersji natywnej v0.12, która nie ma interfejsów API, których próbowałem użyć. To jest absolutnie szalone.

+0

W jaki sposób sprawdziłeś, czy native-fs-respondenci używają innej wersji natywnego reagowania? i czy byłeś w stanie rozwiązać ten problem, mam do czynienia z podobnym problemem z logowaniem opartym na native-linkedin. https://github.com/jodybrewster/react-native-linkedin-login – rubish

+0

Folder react-native-fs wewnątrz node_modules ma pakiet package.json, który ma określoną wersję dla native-respond. Zmieniłem to na * widelcem i przesłałem PR. – freyley

+0

Link do PR? Mam ten sam problem. –