2017-05-27 3 views
2

Gibt es eine Möglichkeit, Mail-Anwendung mit Linking auf Android zu starten. Der Punkt ist das Schema (Deep Link) mesage: funktioniert nur auf iOS. HierStarten Sie E-Mail-App mit react-native [Android]

ist ein kleines Beispiel, die auf iOS arbeiten, aber nicht auf Android:

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

Viele Beiträge offizielle/inoffizielle Gespräche über eine Aktivität Intent oder über das System mailto: aber ich möchte nicht ein schreiben Email. Ich möchte die Mail-App öffnen, da der Benutzer die E-Mail, die ich ihm gesendet habe, überprüfen könnte.

Übrigens verwende ich react-native.

+0

Da Nachricht kein Schema ist. Und selbst wenn es - warum würde es E-Mail öffnen? Messaging-Apps und E-Mail-Apps sind normalerweise nicht das Gleiche. Entweder versuchen Sie eine URL mit Schema mailto:, oder verwenden Sie den E-Mail-MIME-Typ wie in https://stackoverflow.com/questions/3312438/how-to-open-email-program-via-intent-but-only-an-email -Programm –

+1

Auch Deep Link und Magi Link sind zwei verschiedene Dinge, von denen keiner ist, was Sie versuchen zu tun. –

+0

Ich benutze React Native, ich kann nicht Intent API verwenden, nur Linking API von react native zur Verfügung gestellt. Und "Nachricht" ist ein Schema auf iOS ... Und es öffnet die Mail-iOS-Anwendung –

Antwort

2

Ich löste dieses Problem mit nativem Module in RN

Zunächst wird der Cross-Plattform-Code in JS das Postfach zu öffnen:

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

Linking ist eine Cross-Plattform von React-Mutter zur Verfügung gestellt. Wie auch immer, die URL message:0 funktionierte nicht unter Android. Die einzige Lösung, die ich gefunden habe, ist, einen internen Wrapper in meiner App zu erstellen und eine ReactMethod in Java zu erstellen.

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

Wenn Sie bereits nativen Code verwenden React-india Framework entwickelt, ist dies eine grundlegende ReactMethod wo

private static final String REACT_MODULE = "UIMailLauncher"; 

    @Override 
    public String getName() { 
     return REACT_MODULE; 
    } 
2

Absichten zu feuern können Sie die Linking.openURL API verwenden:

import { Linking } from 'react-native' 
Linking.openURL("mailto:[email protected]"); 

Dies funktioniert, weil aus der Dokumentation:

beliebige URL, die mit {@code Inten t.ACTION_VIEW}.

+0

Diese öffnen Sie eine E-Mail schreiben, wo ich eine E-Mail von meiner App senden und die Möglichkeit hinzufügen wollte, die E-Mail-App von meiner App, die der Benutzer ihre E-Mails überprüfen könnte;) Ich ein natives Modul für diesen Job gemacht und es funktioniert ziemlich gut –

+1

Das ist sehr cool @LirooPierre - können Sie bitte Ihr natives Modul teilen. – ystal

Verwandte Themen