内容へ移動
WildTree Wiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
暗黙のインテント
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 暗黙のインテント ====== ===== 概要 ===== インテント-殊に暗黙のインテントは、AndroidをiOSと大きく差別化している最大のものであるといえる。 コレがあるが故に、Androidはデータをアプリ間で自由に共有でき、ツイッターへ投稿する、写真を公開するなどの処理を、他のアプリに依頼する形で、実装せずとも利用できるのである。 ここでは、暗黙のインテントに関する事柄について記しておく。 ===== 画像をギャラリーから取得する ===== プログラムから、以下のように、TypeとActionを指定して、暗黙のインテントを起動する。戻りは、onActivityResult()で受け取る。必要に応じて、requestCodeをチェックすること。 <code> Intent gi = new Intent(); gi.setType("image/*"); gi.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(gi, GALLERY_REQUEST); </code> 画像はURIで渡されるので、受け取ったら、InputStream経由でBitmapへと取り出す。 <code> @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO 自動生成されたメソッド・スタブ super.onActivityResult(requestCode, resultCode, data); if (requestCode == GALLERY_REQUEST && resultCode == RESULT_OK) { try { URI uri = data.getData(); InputStream is = getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(is); is.close(); } </code> ===== 画像をインテント経由で受け取る ===== インテントからデータを受け取るためには、受け取りたい Activityに Intent-filterを定義してやる必要がある。Manifest ファイルで、 <code> <intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="image/jpeg"/> <data android:mimeType="image/jpg"/> <data android:mimeType="image/png"/> <data android:mimeType="image/gif"/> </intent-filter> </code> のように、action/category そして、dataを定義してやる。 画像は、image/* でも受け取ることが出来るが、動画など、期待していないタイプまで引き渡される可能性があるので、受け取りたいものだけを列記しておいた方が良いだろう。 プログラム側では、onCreate()の中で、次のようにデータを受け取る。URIはParcelableで渡されてくるので注意。Stringなどではないので、誤った受け取り方をすると、NullPointer例外などを引き起こす。 <code> Intent intent = getIntent(); String action = intent.getAction(); if (Intent.ACTION_SEND.equals(action)) { Bundle params = intent.getExtras(); if (params != null) { String type = intent.getType(); if (type.startsWith("image/")) { Uri uri = params.getParcelable(Intent.EXTRA_STREAM); try { InputStream is = getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(is); is.close(); } </code> ===== テキストをインテント経由で受け取る ===== [[Androidに関して]]へ戻る。
暗黙のインテント.txt
· 最終更新: 2015/04/10 08:27 by
127.0.0.1
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ