Android
 Computer >> コンピューター >  >> プログラミング >> Android

【Android開発】ACTION_SENDを使って他アプリとデータを共有する方法

はじめに

Androidでは、暗黙的インテント(Implicit Intent)を使用することで、他のアプリケーションへ簡単にデータを送信できます。具体的には、ACTION_SENDアクションを指定したインテントを作成し、Intent.createChooser()を呼び出すことで、端末のデフォルトの共有ダイアログ(チューザー)を表示します。

この記事では、TextViewに表示されたテキストデータを、他のアプリ(メール、SNSなど)と共有するサンプルアプリの作成手順を解説します。なお、共有ダイアログの見た目や表示内容は、Androidのバージョンや端末メーカーによって異なる場合があります。

実装手順

ステップ1: プロジェクトの新規作成

Android Studioを起動し、「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトをセットアップしてください。

ステップ2: レイアウトファイルの編集

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:id="@+id/layout"
    android:gravity="center"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/data"
        android:layout_width="match_parent"
        android:gravity="center"
        android:textSize="30sp"
        android:text="www.tutorialspoint.com"
        android:layout_height="wrap_content" />
</LinearLayout>

このレイアウトにはTextViewが1つ配置されています。ユーザーがこのTextViewをタップすると、そのテキストデータが他のアプリケーションへ共有される仕組みです。

ステップ3: MainActivity.java の編集

src/MainActivity.java に以下のコードを追加します。

package com.example.andy.myapplication;
import android.annotation.TargetApi;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    public int counter;
    @TargetApi(Build.VERSION_CODES.O)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView textView = findViewById(R.id.data);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.setAction(Intent.ACTION_SEND);
                i.setType("text/plain");
                i.putExtra(android.content.Intent.EXTRA_TEXT, textView.getText().toString());
                startActivity(Intent.createChooser(i, "Share to"));
            }
        });
}
}

このコードでは、TextViewにクリックリスナーを設定しています。TextViewがクリックされると、ACTION_SENDアクションを持つインテントが生成され、MIMEタイプとしてtext/plainを指定したうえで、テキストデータがEXTRA_TEXT経由で渡されます。最後にIntent.createChooser()を使って共有先選択画面を起動します。

ステップ4: Manifestファイルの確認

今回は特別な権限やコンポーネントの宣言が必要ないため、manifest.xmlファイルを変更する必要はありません。

アプリの実行と動作確認

それでは、実際にアプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提とします。Android Studioでプロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの実行(Run)アイコンをクリックしてください。表示された一覧から自分のモバイルデバイスを選択すると、端末に以下のような初期画面が表示されます。

【Android開発】ACTION_SENDを使って他アプリとデータを共有する方法

この初期画面で「tutorialspoint.com」と書かれたTextViewをタップすると、Android端末のデフォルトの共有ダイアログ(チューザー)が開きます。

【Android開発】ACTION_SENDを使って他アプリとデータを共有する方法

共有ダイアログから任意のアプリケーションを選択すると、そのアプリを通じてデータが送信されます。特定の相手に個別に送信することもできますし、SNSのタイムライン(ウォール)に投稿することも可能です。どのような共有方法が使えるかは、チューザーに表示される対応アプリケーションによって決まります。

まとめ

このように、ACTION_SENDIntent.createChooser()を組み合わせるだけで、数行のコードで他アプリとのデータ共有機能を実装できます。テキスト以外にも画像や動画などを共有したい場合は、適切なMIMEタイプ(image/*など)を指定することで同様の仕組みが利用できるので、ぜひ試してみてください。

  1. Androidで友人と位置情報を共有する7つの方法【Googleマップ・WhatsAppなど】

    GPS技術はここ数十年で大きく進化し、今ではAndroidスマートフォンでも手軽に利用できるようになりました。複数のアプリが正確な現在地を特定でき、中でも最も広く使われているのがGoogleマップです。これらのアプリを使えば、自分の現在地を確認したりナビゲーションしたりするだけでなく、その位置情報を友人と共有することも可能です。位置情報を直接共有することは、自分の正確な居場所を伝えるための非常に便利な手段です。「今どこにいるのか」「家への道順」などを口頭で説明しても、なかなか上手く伝わらないことはよくありますよね。実は、この便利な機能はいつでも指先で使えるのに、その存在を忘れている人が多いので

  2. Windows 10 PCにAndroidの画面をキャストする方法|ワイヤレスディスプレイ設定ガイド

    スクリーンキャストは、Windows 10のAnniversary Updateで追加された注目機能の一つです。別名「ワイヤレスディスプレイ」とも呼ばれ、Androidスマートフォンの画面をWindows 10パソコンへワイヤレスで投影できます。 動画制作やYouTuberの方にとっては、スマホの操作画面を大きな画面に映しながら録画や解説ができるため、非常に便利な機能です。ただし、Windows 10側とAndroid側の両方で必要な設定が多く、初めて行う人には少し難しく感じられるかもしれません。 そこで本記事では、Windows 10 PCとAndroidスマホをワイヤレス接続して画面をキャ