2016-06-27 11 views
5

Bên trong một ngã ba của phản ứng bản địa-fs (https://github.com/johanneslumpe/react-native-fs), tôi đang cố gắng để thêm mã này:Cố gắng thêm một phương pháp openfile để Phản ứng Native, không thể gọi 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)); 
     } 
     } 

Nhưng khi tôi xây dựng nó, tôi nhận được lỗi này:

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

tôi nghĩ rằng tôi đang sử dụng ReactContextBaseJavaModule chính xác theo cùng một cách như thế này, trong lõi Phản ứng repo Quê quán:

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

+0

theo mã nguồn: https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContextBaseJavaModule.java điều này sẽ hoạt động! đảm bảo bạn đang sử dụng phiên bản mới nhất bằng cách kiểm tra gradle.build và thực hiện xóa sạch dự án –

Trả lời

3

Nó chỉ ra rằng phản ứng-native-fs có sự phụ thuộc riêng của phản ứng nội tại của nó trong quá trình xây dựng của nó. Vì vậy, mặc dù toàn bộ ứng dụng đang xây dựng phản ứng bản địa v0.25, phản ứng-native-fs đã tự xây dựng bản thân khỏi v0.12 phản ứng gốc, không có API mà tôi đang cố gắng sử dụng. Điều này là hoàn toàn hạt.

+0

Làm cách nào bạn xác minh rằng phản ứng-native-fs đang sử dụng một phiên bản khác của phản ứng gốc? và bạn có thể giải quyết vấn đề này không, tôi đang đối mặt với một vấn đề tương tự với phản ứng-native-linkedin-login. https://github.com/jodybrewster/react-native-linkedin-login – rubish

+0

thư mục phản ứng-native-fs bên trong node_modules có một package.json có một phiên bản cụ thể cho phản ứng gốc. Tôi đã thay đổi điều đó thành * trên một ngã ba và gửi một PR. – freyley

+0

Liên kết với PR? Tôi đang gặp vấn đề tương tự. –

Các vấn đề liên quan