Подтвердить что ты не робот

Открыть URL в веб-браузере по умолчанию

Я новичок в action-native, и я хочу открыть url в браузере по умолчанию, например Chrome на Android и iPhone.

Мы открываем url через намерение в Android, аналогичное функциональности, которую я хочу достичь.

У меня есть поиск много раз, но он даст мне результат Deepklinking.

4b9b3361

Ответ 1

Вы должны использовать Linking.

Пример из документов:

class OpenURLButton extends React.Component {
  static propTypes = { url: React.PropTypes.string };
  handleClick = () => {
    Linking.canOpenURL(this.props.url).then(supported => {
      if (supported) {
        Linking.openURL(this.props.url);
      } else {
        console.log("Don't know how to open URI: " + this.props.url);
      }
    });
  };
  render() {
    return (
      <TouchableOpacity onPress={this.handleClick}>
        {" "}
        <View style={styles.button}>
          {" "}<Text style={styles.text}>Open {this.props.url}</Text>{" "}
        </View>
        {" "}
      </TouchableOpacity>
    );
  }
}

Вот пример, на котором вы можете попробовать Expo Snack:

import React, { Component } from 'react';
import { View, StyleSheet, Button, Linking } from 'react-native';
import { Constants } from 'expo';

export default class App extends Component {
  render() {
    return (
      <View style={styles.container}>
       <Button title="Click me" onPress={ ()=>{ Linking.openURL('https://google.com')}} />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
    paddingTop: Constants.statusBarHeight,
    backgroundColor: '#ecf0f1',
  },
});

Ответ 2

Более простой способ, который устраняет проверку, может ли приложение открывать URL.

  loadInBrowser = () => {
    Linking.openURL(this.state.url).catch(err => console.error("Couldn't load page", err));
  };

Вызов с помощью кнопки.

<Button title="Open in Browser" onPress={this.loadInBrowser} />