Android StudioでWebViewを使用してmailtoリンクを処理する方法


まず、AndroidManifest.xmlファイルに以下のパーミッションを追加します。

<uses-permission android:name="android.permission.INTERNET" />

次に、WebViewを配置するレイアウトファイル(例:activity_main.xml)を作成します。

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

次に、MainActivity.javaファイルに以下のコードを追加します。

import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.net.MailTo;
public class MainActivity extends AppCompatActivity {
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = findViewById(R.id.webview);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url.startsWith("mailto:")) {
                    MailTo mailTo = MailTo.parse(url);
                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.setType("text/plain");
                    intent.putExtra(Intent.EXTRA_EMAIL, new String[]{mailTo.getTo()});
                    intent.putExtra(Intent.EXTRA_SUBJECT, mailTo.getSubject());
                    intent.putExtra(Intent.EXTRA_CC, mailTo.getCc());
                    intent.putExtra(Intent.EXTRA_TEXT, mailTo.getBody());
                    startActivity(intent);
                    return true;
                }
                return super.shouldOverrideUrlLoading(view, url);
            }
        });
        webView.loadUrl("https://example.com");
    }
}

上記のコードでは、WebViewClientのshouldOverrideUrlLoadingメソッドをオーバーライドして、mailtoリンクを処理しています。クリックされたURLがmailto:で始まる場合、MailToクラスを使用してメールの詳細を取得し、Intentを作成してメールクライアントを起動します。

最後に、AndroidManifest.xmlファイルに以下のパーミッションを追加して、メール送信に必要な権限を付与します。

<uses-permission android:name="android.permission.SEND_EMAIL" />

これで、Android StudioでWebViewを使用してmailtoリンクを処理する方法がわかりました。これを参考にして、自分のアプリに組み込んでみてください。