ビルドインアプリを呼び出す
Calling Built-In Apps
Androidのキーとなる特性の1つは、その機能性で、
この機能性はアプリケーションに垣根無く他のアプリケーションを
呼び出せる様にしてくれています。
ユーザに同じ形で書き込めるフォームなどを実現するために、
デバイスにある様々なアプリケーションに
その機能を開放できる様になります。
組込みアプリを呼び出すにはたくさんの方法があり、
どのようにするかは呼び出すアプリケーションに依ります。
ここでは、Androidデバイスにはだいたいインストールされているで
あろうアプリケーション
マップ・Google Playにあるユーザが特定したアプリ・e-mailの送信
テキストやグラフィックコンテンツを送り、それらを処理するアプリ
などを、どのように呼び出すかを示します。
マップを表示する
開発するアプリケーションでマップを表示するには、
geo:スキームを使ってアクティビティを開始させます。
package net.learn2develop.callingapps;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle saveInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse("geo:37.827500,-122.481670"));
startActivity(i);
}
}
このコードをAndroidデバイス上で走らせたときに、
geo:スキームを処理できるアプリケーションの一覧が表示されます。
このリストからアプリケーションを開始するために、
Google EarthやMapsなどが表示されると思いますので、
選ぶと同時にオプションとして”通常、このアプリケーションを使う”か
一時的に使うかチェックを入れて指定することもできます。
”通常このアプリケーションを使う”にチェックを入れておくと、
同じような場面で同じアプリケーションを自動的に使うことができます。
Google Playを開始します。
もし、Google Playが利用できる他のアプリケーションをユーザに
転送したいとすると、market:スキームを使います。
Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse(
"market://details?id=com.zinio.mobile.android.reader"));
startActivity(i);
このコード部はGoogle Playで利用できるZinioアプリケーションを
表示してくれます。
E-mailを送信します
開発するアプリケーション内からe-mailメッセージを送信するには、
以下のようなコード部を使います。
Intent i = new Intent(Intent.ACTION_SEND);
String[] to = {"e-mailアドレス1","e-mailアドレス2"}
String[] cc = {"e-mailアドレス3","e-mailアドレス4"}
i.putExtra(Intent.EXTRA_EMAIL, to);
i.putExtra(Intent.EXTRA_CC, cc);
i.putExtra(Intent.EXTRA_DSUBJECT, "subject here...");
i.putExtra(Intent.EXTRA_TEXT, "Message here...");
i.setType("message/rfc822");
startActivity(Intent.createChooser(i, "Email"));
このコードでe-mailアプリケーションが送信前のe-mailの内容を
表示します。
他のアプリにコンテンツを送信します。
時には、他のアクティビティを開始したくなったり、
他のアクティビティにいくつかのコンテンツを
送りたくなるかもしれません。
例えば、e-mailアプリケーションと同じように、
Facebookにもいくらかの
コンテンツを送りたくなるかもしれません。
この場合、ターゲットとする特定のアプリケーションを使う代わりに
随時アプリケーションリストにあるものから選んだアプリケーションで
一般的なACTION_SENDを使うことができます。
以下のコードで考えてみます。
Intent i = new Intent(android.content.Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT,"subject...");
i.putExtra(Intent.EXTRA_TEXT,"Text...");
startActivity(Intent.createChooser(i,"Apps that can respond to this"));
実際のデバイスでこのコードを走らせる時には、
アプリケーションのリストが表示されるかもしれません。
もし、メッセージを扱うアプリを選んだとしたら、
そのデータをIntentオブジェクトにセットして、
SMSメッセージとして送信されます。
もし、Gmailを選ぶと、データをIntentオブジェクトにセットして、
e-mailとして送信されます。ツィッターを選ぶと、
(デバイスにツィッターがインストールされている場合)
データがIntentオブジェクトにセットされ、ツィートされます。
バイナリコンテンツを送信します。
もし、drawableフォルダにいくつか画像を持っていたら、
以下のコードを実行することで、他のアプリケーションに
それら画像を送信することもできます。
//---sending binary content---
Uri uriToImage = Uri.parse(
"android.resource://net.learn2develop.CallingApps/drawable/" +
Integer.toString(R.drawable.android));
Intent = new Intent(android.content.Intent.ACTION_SEND);
i.setType("image/jpeg);
i.putExtra(Intent.EXTRA_STREAM, uriToImage);
i.putExtra(Intent.EXTRA_TEXT,"Text...");
startActivity(Intent.createChooser(i, "Apps that can respond to this"));
プロジェクトの中のdrawableフォルダの1つにandroid.jpgと
名付けられたファイルがあると考えられます。
画像のタイプをimage/jpegにセットしてから、putExtra()メソッドを
Intentオブジェクトに画像を置くために使います。
もし、ツィッターにデータを送るなら、ツィートの一部分として
ツィッターに使われます。
いろんな画像を送るために、このようなコードも使えます。
import java.util.ArrayList;
...
...
Uri uriToImage1 =
Uri.parse(
"android.resourse://net.learn2develop.CallingApps/drawable/" +
Integet.toString(R.drawable.android));
Uri uriToImage2 =
Uri.parse(
"android.resource://net.learn2develop.CallingApps/drawable/" +
Integet.toString(R.drawable.google));
ArrayList<Uri> urisToImages = new ArrayList<Uri>();
urisToImages.add(uriToImage1);
urisToImages.add(uriToImage2);
Intent i = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
i.setType("image/*");
i.putExtra(Intent.EXTRA_STEAM, urisToImages);
i.putExtra(Intent.EXTRA_SUBJECT, "Subject...");
i.putExtra(Intent.EXTRA_TEXT, "Text...");
startActivity(Intent.createChooser(i, "Apps that can respond to this"));
このコードでGmailで2つの画像をe-mail送信するようにできます。
もし、単純に画像を見るためのアプリケーションを開始するのなら、
以下のコードを使います。
Intent i = new Intent(android.content.Intent.ACTION_VIEW);
//---indicates the type that the target activity will handle---
i.setType("image/jpeg");
startActivity(i);
このコードは画像閲覧のできるアプリケーション、デバイス上にある
すべてのアプリケーションをリストがします。
もしSDカードにあるような画像を画像閲覧アプリケーションに
送信したければ、以下のようにします。
Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setDataAndType(
Uri.parse("file:///storage/sdcard0/MyPhoto.jpg"), "image/*");
startActivity(i);
SDカードにある画像をGalley Viewerが表示します。
|
ページ内メニュー
マップを表示
Google Playを開始
E-mailを送信
他のアプリにコンテンツを送信
バイナリコンテンツを送信
【用語解説】
XML
HTMLと同じような言語ですが、
すべての型の複雑なデータ構造を
送信するための設計ができる
ファイル型式。
オブジェクト
ある手続きを持った
データアイテムで、
他の手続きと関連づけされるもの
metaタグ
ウェブページに与える
情報の宣言につかわれ
検索エンジン・ウェブアプリ
などにウェブページの内容を
伝える役目をする。
metaタグの内容は
ページ内に表示されない。
コンストラクタ
オブジェクト指向
プログラミングで使われ
新しいオブジェクトが
作られ時に呼び出される
メソッドのこと。
クラス
オブジェクト指向
プログラミングでの
オブジェクトの型
オブジェクト指向プログラミング
プログラミングの
方式のことで、
プログラマはデータ型を
定義できるだけでなく
自動的にデータ型と
メソッドを関連付け
できる
アクティビティ
Androidにおける
アクティビティは
Androidアプリの画面に
相当するもの
ボタンやウェブページ
など表示されている
すべてのもののこと。
|