Adding share action/extension in React Native

后端 未结 3 2073
长发绾君心
长发绾君心 2021-02-13 15:48

Trying to build a React Native app that injects a menu item in the Share menu (Share Action for Android, Share Extension for iOS) and receives shared items in the app. Is there

3条回答
  •  不思量自难忘°
    2021-02-13 16:19

    I implemented a module for that: https://www.npmjs.com/package/react-native-share-menu (currently just works for Android).

    That's how to use it:

    Install the module:

    npm i --save react-native-share-menu

    In android/settings.gradle:

    ...
    include ':react-native-share-menu', ':app'
    project(':react-native-share-menu').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share-menu/android')
    

    In android/app/build.gradle:

    ...
    dependencies {
        ...
        compile project(':react-native-share-menu')
    }
    

    Register module (in MainActivity.java):

    import com.meedan.ShareMenuPackage;  // <--- import 
    
    public class MainActivity extends ReactActivity {
    ......
        @Override
        protected List getPackages() {
            return Arrays.asList(
                new MainReactPackage(),
                new ShareMenuPackage()  // <------ add here      
            );
        }
    ......
    }
    

    Example:

    import React, {
        AppRegistry,
        Component,
        Text,
        View
    } from 'react-native';
    import ShareMenu from 'react-native-share-menu';
    
    class Test extends Component {
        constructor(props) {
            super(props); 
            this.state = {
                sharedText: null
            };
        }
    
        componentWillMount() {
            var that = this;
            ShareMenu.getSharedText((text :string) => {
                if (text && text.length) {
                    that.setState({ sharedText: text });
                }
            })
        }
    
        render() {
            var text = this.state.sharedText;
            return (
                
                    Shared text: {text}
                
            );
        }
    }
    
    AppRegistry.registerComponent('Test', () => Test);
    

提交回复
热议问题