2017-05-27 21 views
2

AndroidでLinkingを使用してメールアプリを起動する方法はありますか? ポイントはスキーム(ディープリンク)mesage:はiOS上でのみ動作しています。ここで反応ネイティブのメールアプリを起動する[Android]

は、Android上ではないのiOS上で動作しますが、少し例を次に示します。

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

多くのポスト活動の意図についてまたはスキームmailto:についての公式/非公式会談が、私は書きたくありませんEメール。私は、私が彼に送った電子メールをユーザがチェックできるよりも、メールアプリを開けたいと思っています。

ところで、私は反応ネイティブを使用しています。なぜならドキュメントから

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

これは動作します:あなたがLinking.openURL APIを使用することができます

http://www.gaanza.com/blog/email-client-intent-android/comment-page-1/

+0

基本ReactMethodです。そして、たとえそれが電子メールを開いたのであれば、なぜですか?メッセージングアプリとメールアプリは、通常同じことではありません。メールをスキームmailto:で試してみるか、https://stackoverflow.com/questions/3312438/how-to-open-email-program-via-intents-but-only-an-emailのような電子メールのMIMEタイプを使用してください-program –

+1

また、ディープリンクとマグニリンクは2つの異なるものですが、どちらもあなたがしようとしているものではありません。 –

+0

私はReact Nativeを使用しています。私はIntent APIを使用できません。 「メッセージ」はiOSのスキームです...メールiOSアプリケーションを開きます –

答えて

2

私はまずRN

でメールボックスを開くには、JSでのクロスプラットフォームのコードをネイティブモジュールを使用してこの問題を解決:

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

リンクが反応-ネイティブが提供する、クロスプラットフォームです。とにかく、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); 
    } 

すでにリアクト - ネイティブフレームワークを使用してネイティブコードを開発した場合は、メッセージがスキームではないので、これは

private static final String REACT_MODULE = "UIMailLauncher"; 

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

"のmailto" の意図を試してみてくださいではなく、送信のIntent.ACTION_VIEWと:

Intenで開くことができる任意のURL t.ACTION_VIEW}。

+0

私はReact Nativeを使っています。私は 'Linking' APIを使いたいと思います。 。ACTION_VIEW'しかし、これは 'Linking' APIからは不可能です。 –

2

はインテントを発射するには:

+0

これは私のアプリから電子メールを送信し、自分の電子メールをチェックできるアプリからメールアプリを開く機能を追加したいところです。この仕事のためのネイティブモジュールを作ったとかなりうまく動作します –

+1

それは非常にクールな@LirooPierreです - あなたのネイティブモジュールを共有してください。 – ystal

関連する問題