ウェブアプリケーション,インジェクション,コマンドインジェクション

androidアプリケーション開発の基本

ビルドインアプリを呼び出す

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を送信
他のアプリにコンテンツを送信
バイナリコンテンツを送信

inserted by FC2 system