🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

The React Native share menu component adds the application to the share menu of the device, so it can be launched from other apps and receive data from them.

Navigation_Menu React Native

Documentation

LOOKING FOR A VOLUNTEER TO MAINTAIN THE IOS VERSION, CURRENTLY UNMAINTAINED

react-native-share-menu

Adds the application to the share menu of the device, so it can be launched from other apps and receive data from them (current text or images).

Installation

  • Install the module
npm i --save react-native-share-menu

Usage in Android

Automatic Installation (React Native 0.36+)

At the command line, in the project directory:

react-native link

Manual Installation

  • 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') }
  • In android/app/src/main/AndroidManifest.xml in the <activity> tag:
<activity   ...   android:documentLaunchMode="never">   ...   <intent-filter>     <action android:name="android.intent.action.SEND" />     <category android:name="android.intent.category.DEFAULT" />     <data android:mimeType="text/plain" />     <data android:mimeType="image/*" />   </intent-filter> </activity>
  • Register module (in MainApplication.java)
import com.meedan.ShareMenuPackage;  // <--- import  public class MainApplication extends Application implements ReactApplication {   ......   @Override   protected List<ReactPackage> getPackages() {     return Arrays.<ReactPackage>asList(       new MainReactPackage(),       new ShareMenuPackage()  // <------ add here     );   }   ......  }

Usage in iOS

In the share extension loadView() method, add:

NSExtensionItem *item = self.extensionContext.inputItems.firstObject; NSItemProvider *itemProvider = item.attachments.firstObject; [ShareMenuModule setShareMenuModule_itemProvider:itemProvider]; [ShareMenuModule setContext: self.extensionContext];

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,       sharedImage: null     };   }    componentWillMount() {     var that = this;     ShareMenu.getSharedText((text :string) => {       if (text && text.length) {         if (text.startsWith('content://media/')) {           that.setState({ sharedImage: text });         } else {           that.setState({ sharedText: text });         }       }     })   }    render() {     var text = this.state.sharedText;     return (       <View>         <Text>Shared text: {text}</Text>       </View>     );   } }  AppRegistry.registerComponent('Test', () => Test);

Or check the "example" directory for an example application.

How it looks

Releasing a new version

$ npm version <minor|major|patch> && npm publish

Credits

Sponsored and developed by Meedan.


You May Also Like