使用react-native [Android]启动邮件应用程序

Lir*_*rre 4 android react-native

有没有办法Linking在Android上启动邮件应用程序.重点是方案(深层链接)mesage:仅适用于iOS.

这是一个在iOS上运行但在Android上不运行的小例子:

Linking.canOpenURL('message:0').then(supported => {
  if (!supported) {
    console.log('Can\'t handle url');
  } else {
    return Linking.openURL('message:0');
  }
});
Run Code Online (Sandbox Code Playgroud)

很多帖子关于活动意图或关于该计划的官方/非官方会谈,mailto:但我不想写一封电子邮件.我想打开邮件应用程序,而不是用户可以查看我发送给他的电子邮件.

顺便说一下,我正在使用react-native.

Lir*_*rre 9

我用RN中的Native模块解决了这个问题

首先在JS中打开邮箱的跨平台代码:

openMailApp() {
    if (Platform.OS === 'android') {
      NativeModules.UIMailLauncher.launchMailApp(); // UIMailLauncher is the 
      return;
    }
    Linking.openURL('message:0'); // iOS
    return;
  }
Run Code Online (Sandbox Code Playgroud)

链接是React-Native提供的跨平台.无论如何,URL message:0在Android上不起作用.我找到的唯一解决方案是在我的应用程序中创建一个实习包装器并在Java中创建一个ReactMethod.

  @ReactMethod
  public void launchMailApp() {
      Intent intent = new Intent(Intent.ACTION_MAIN);
      intent.addCategory(Intent.CATEGORY_APP_EMAIL);
      getCurrentActivity().startActivity(intent);
  }
Run Code Online (Sandbox Code Playgroud)

如果您已经使用React-Native框架开发了本机代码,那么这是一个基本的ReactMethod

  private static final String REACT_MODULE = "UIMailLauncher";

  @Override
  public String getName() {
      return REACT_MODULE;
  }
Run Code Online (Sandbox Code Playgroud)