react-native-Navigation导航[v2]

时间:2019-01-19 14:20:53

标签: react-native react-native-android react-native-navigation-v2

经过数小时的搜索和测试,我无法应对这个挑战。

我正在尝试从另一个应用程序->与我的应用程序共享数据(URL,图像)。

但是我无法找到有关如何实现此目标的适当文档(在Android和iOS上),或者无法找到可靠的模块(react-native-share-extension似乎是过大的选择,不适用于react-native-navigation v2({{ 3}})和#139(不适用于iOS)

让我们谈谈Android,我确实使用(顺便说一句,iOS中的等效功能是)更新了清单<intent-filter>

    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="image/*" />
        <data android:mimeType="text/plain" />
    </intent-filter>

并成功在其他应用程序的共享到列表中看到我的应用程序...单击它打开我的应用程序... 检查

现在我需要在我的应用程序中实际获取意图数据。我尝试从react-native使用Linking,但未成功,但没有任何控制台日志。

下面是我的代码,我要丢失什么,或者我应该为我的Android和iOS项目做什么以获取意图数据?

index.js

import App from './App';

App.js

import { persistStore } from 'redux-persist';
import { Navigation } from "react-native-navigation";
import { Linking } from 'react-native';
// other imports ...
// [...]

const handleOpenURL = (event) => {
  console.log(event.url);
};

Linking.addEventListener('url', handleOpenURL);
Linking.getInitialURL().then((url) => {
    if (url) {
      console.log('Initial url is: ' + url);
    }
  }).catch(err => console.error('An error occurred', err));

Navigation.events().registerAppLaunchedListener(() => {
   persistStore(store, null, () => {
    // Register Screens ...
    Navigation.setRoot({
    // Setting root to home page (home.js)

Home.js //也在那里尝试过

// imports
class Home extends Component {
//...
   _handleOpenURL(event) {
    console.log(event.url);
   };
   componentDidMount() {
      Linking.addEventListener('url', this._handleOpenURL);
      Linking.getInitialURL().then((url) => {
        if (url) {
            console.log('Initial url is: ' + url);
        }
      }).catch(err => console.error('An error occurred', err));
   }

MainActivity.java //这可能是我缺少诸如getIntent()之类的东西的地方?

package com.my.app;

import com.imagepicker.permissions.OnImagePickerPermissionsCallback;
import com.facebook.react.modules.core.PermissionListener;
import com.reactnativenavigation.NavigationActivity;

public class MainActivity extends NavigationActivity implements OnImagePickerPermissionsCallback {

  private PermissionListener listener;

  @Override
  public void setPermissionListener(PermissionListener listener) {
    this.listener = listener;
  }

  @Override
  public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (listener != null) {
      listener.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  }

}

我尝试了上述react-native-share-menu MainActivity 解决方案,但是遇到了我无法解决的错误(错误:方法未覆盖或实现超类型的方法)

感谢您的帮助!

------软件包

  • “反应”:“ 16.6.3”,
  • “ react-native”:“ 0.57.8”,
  • “ react-native-navigation”:“ ^ 2.6.0”

0 个答案:

没有答案