データのシェア - 他のプログラムからのデータを受け取る

データのシェア - 単純なテキストを他のアプリに送る」では、 自分のプログラムから他のアプリに対してデータをシェアする方法を紹介しました。

ACTION_SEND のインテントに、テキストをセットして送るのでしたね。

この記事では、そのデータの受け取り側がどうするのか、説明したいと思います。

データのタイプが text/plain であるものを受け取ったらそれを表示する、という簡単なプログラムを作ります。

他のプログラムからのテキストデータを受け取り表示する

ここで作るプログラム "Receiving Text" をインストールすると、「データのシェア - 単純なテキストを他のアプリに送る」 で作ったプログラムでテキストのシェアを試みると、シェアするプログラムリストに "Receiving Text" が出てきます。

データのシェア - 他のプログラムからのデータを受け取る

ここでそれを選び起動すると、次のように渡したテキストが表示されます。

データのシェア - 他のプログラムからのデータを受け取る

コードは次の通り。

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  textView1 = (TextView)findViewById(R.id.textView1);

  Intent intent = getIntent();
  String action = intent.getAction();
  String type = intent.getType();

  if(Intent.ACTION_SEND.equals(action)
    && "text/plain".equals(type)){
    textView1.setText(
      intent.getStringExtra(Intent.EXTRA_TEXT));
  }
}

onCreate にてアクティビティが始まったときに、インテント、アクション、及びタイプを取得します。

アクションが Intent.ACTION_SEND でタイプが "text/plain" である場合、インテントからデータを取得 (getStringExtra) して、それを TextView にセットしています。

また、このアクティビティが ACTION_SEND で text/plain を受け取れることをシステムに教えるために、AndroidManifest.xml にインテント・フィルターを記述します。

<activity
  android:name="com.example.sharing2.MainActivity"
  android:label="@string/app_name" >
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
  <intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
  </intent-filter>
</activity>

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Android 開発入門