2016-06-27 3 views
5

Внутри вилки среагировать-нативной фс (https://github.com/johanneslumpe/react-native-fs), я пытаюсь добавить этот код:Попытка добавить метод OpenFile среагировать Native, не может вызвать 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)); 
     } 
     } 

Но когда я построить его, я получаю эту ошибку:

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

Я думаю, я использую ReactContextBaseJavaModule точно таким же образом, как это, в основном Реагировать Native репо:

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

+0

в соответствии с исходным кодом: https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java, это должно работать! убедитесь, что вы используете последнюю версию, проверив gradle.build и выполнив очистку в проекте. –

ответ

3

Оказывается, что response-native-fs имеет свою собственную внутреннюю зависимость от реакции в своем процессе сборки. Таким образом, несмотря на то, что все приложение было построено на реагировании на родной v0.25, реакция-native-fs строилась сама по себе от native-v0.12, у которой нет API-интерфейсов, которые я пытался использовать. Это абсолютно орехи.

+0

Как вы подтвердили, что action-native-fs использует другую версию реагирования? и если бы вы смогли это разрешить, я столкнулся с аналогичной проблемой с реакцией-native-linkedin-login. https://github.com/jodybrewster/react-native-linkedin-login – rubish

+0

В папке response-native-fs внутри node_modules есть package.json, у которого была определенная версия для реакции-native. Я изменил это на * на вилке и представил PR. – freyley

+0

Ссылка на PR? У меня такая же проблема. –