Giter Club home page Giter Club logo

react-native-contacts-1's Introduction

React Native Contacts (remobile)

A cordova contacts for react-native, supprt for ios and android

Installation

npm install @remobile/react-native-contacts --save

Installation (iOS)

  • Drag RCTContacts.xcodeproj to your project on Xcode.
  • Click on your main project file (the one that represents the .xcodeproj) select Build Phases and drag libRCTContacts.a from the Products folder inside the RCTContacts.xcodeproj.
  • Look for Header Search Paths and make sure it contains both $(SRCROOT)/../../../react-native/React as recursive.

Installation (Android)

...
include ':react-native-contacts'
project(':react-native-contacts').projectDir = new File(rootProject.projectDir, '../node_modules/@remobile/react-native-contacts/android')
  • In android/app/build.gradle
...
dependencies {
    ...
    compile project(':react-native-contacts')
}
  • register module (in MainActivity.java)
import com.remobile.contacts.*;  // <--- import

public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
  ......
  private RCTContactsPackage mContactsPackage; // <--- declare package
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mReactRootView = new ReactRootView(this);
    mContactsPackage = new RCTContactsPackage(this);// <--- alloc package

    mReactInstanceManager = ReactInstanceManager.builder()
      .setApplication(getApplication())
      .setBundleAssetName("index.android.bundle")
      .setJSMainModuleName("index.android")
      .addPackage(new MainReactPackage())
      .addPackage(mContactsPackage)              // <------ add here
      .setUseDeveloperSupport(BuildConfig.DEBUG)
      .setInitialLifecycleState(LifecycleState.RESUMED)
      .build();

    mReactRootView.startReactApplication(mReactInstanceManager, "ExampleRN", null);

    setContentView(mReactRootView);
  }

  ......

  // <----- add start
  @Override
  public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      mContactsPackage.onActivityResult(requestCode, resultCode, data);
  }
  // <----- add end
}

Usage

Example

var React = require('react-native');
var {
    StyleSheet,
    View,
    Image,
} = React;


var Button = require('@remobile/react-native-simple-button');
var RCTContacts = require('@remobile/react-native-contacts');

var {
    contacts,
    ContactFindOptions,
    ContactField,
} = RCTContacts;

module.exports = React.createClass({
    testFind() {
        // display the address information for all contacts
        function onSuccess(contacts) {
            for (var i = 0; i < contacts.length; i++) {
                var item = contacts[i];
                console.log(item);
            }
        };
        function onError(contactError) {
            alert('onError!');
        };
        // find all contacts
        var options = new ContactFindOptions();
        options.filter = "";
        options.multiple = false;
        var fields = ["displayName", "addresses"];
        contacts.find(fields, onSuccess, onError, options);
    },
    testSave() {
        // create a new contact
        var contact = contacts.create();

        // store contact phone numbers in ContactField[]
        var phoneNumbers = [];
        phoneNumbers[0] = new ContactField('work', '212-555-1234', false);
        phoneNumbers[1] = new ContactField('mobile', '917-555-5432', true); // preferred number
        phoneNumbers[2] = new ContactField('home', '203-555-7890', false);
        contact.phoneNumbers = phoneNumbers;
        contact.nickname = "fang";

        // save the contact
        contact.save();
    },
    testRemove() {
        // display the address information for all contacts
        function onSuccess(contacts) {
            for (var i = 0; i < contacts.length; i++) {
                var item = contacts[i];
                item.remove();
            }
        };
        function onError(contactError) {
            alert('onError!');
        };
        // find all contacts
        var options = new ContactFindOptions();
        options.filter = "fang";
        options.multiple = true;
        var fields = ["nickname"];
        contacts.find(fields, onSuccess, onError, options);
    },
    pickContact() {
        contacts.pickContact(function(contact){
            console.log('The following contact has been selected:', contact);
        },function(err){
            console.log('Error: ' + err);
        });
    },
    chooseContact() {
        contacts.chooseContact(function(contact){
            console.log('The following contact has been selected:', contact);
        },function(err){
            console.log('Error: ' + err);
        });
    },
    newContactUI() {
        contacts.newContactUI(function(contact){
            console.log('The following contact has been selected:', contact);
        },function(err){
            console.log('Error: ' + err);
        });
    },
    render() {
        return (
            <View style={styles.container}>
                <Button onPress={this.testFind}>
                    testFind
                </Button>
                <Button onPress={this.testSave}>
                    testSave
                </Button>
                <Button onPress={this.testRemove}>
                    testRemove
                </Button>
                <Button onPress={this.pickContact}>
                    pickContact
                </Button>
                <Button onPress={this.chooseContact}>
                    chooseContact
                </Button>
                <Button onPress={this.newContactUI}>
                    newContactUI
                </Button>
            </View>
        );
    },
});


var styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'space-around',
        alignItems: 'center',
        backgroundColor: 'transparent',
    }
});

HELP

thanks

react-native-contacts-1's People

Contributors

fov42550564 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.