IntentTest

この間、Intentの話をしているときに「じゃあ、それはどうやるんだろう」というところで、手元に何もなかったのであらためて調べてみようと思ったので、いろいろと書いてみました。

SENDボタンは、他のアプリ経由で送るときの動作です。

IMAGE SELECTは、ギャラリーから画像を選択します。

IMAGE CROPは、IMAGE SELECTで選んだ画像を抜き出します。

DELETE IMAGEは、IMAGE SELECTで選んだ画像を削除します。

 

データのアクセスはContentResolverを使うため、すべてUriでアクセスするようになっています。

削除は、ContentResolver#deleteを使うとなにも確認せずに削除しますので大事なデータを選ばないようにしましょう。

画像を抜き出したときは、保存を選ぶとそのまま保存して元のプログラムに戻ってきます。何度も保存するとどんどん同じような画像を保存するので注意してください。

というわけで、ソース。

layoutは、TextView01というIDのTextViewとButton01~04というIDのボタン4つが必要です。


td.java, td.java-ln {vertical-align:top;}
tt.java, tt.java-ln, pre.java, pre.java-ln {line-height:1em; margin-bottom:0em;}
td.java-ln { text-align:right; }
tt.java-ln, pre.java-ln { color:#888888 }
/* Background */ span.java0 { font-size: 10pt; color:#ffffff; }
/* Line numbers */ span.java1 { font-size: 10pt; color:#808080; }
/* Multi-line comments */ span.java2 { font-size: 10pt; color:#3f7f5f; }
/* Single-line comments */ span.java3 { font-size: 10pt; color:#3f7f5f; }
/* Keywords */ span.java4 { font-size: 10pt; color:#7f0055; font-weight:bold; }
/* Strings */ span.java5 { font-size: 10pt; color:#2a00ff; }
/* Character constants */ span.java6 { font-size: 10pt; color:#990000; }
/* Numeric constants */ span.java7 { font-size: 10pt; color:#990000; }
/* Parenthesis */ span.java8 { font-size: 10pt; color:#000000; }
/* Primitive Types */ span.java9 { font-size: 10pt; color:#7f0055; font-weight:bold; }
/* Others */ span.java10 { font-size: 10pt; color:#000000; }
/* Javadoc keywords */ span.java11 { font-size: 10pt; color:#7f9fbf; }
/* Javadoc HTML tags */ span.java12 { font-size: 10pt; color:#7f7f9f; }
/* Javadoc links */ span.java13 { font-size: 10pt; color:#3f3fbf; }
/* Javadoc others */ span.java14 { font-size: 10pt; color:#3f5fbf; }
/* Undefined */ span.java15 { font-size: 10pt; color:#ff6100; }
/* Annotation */ span.java16 { font-size: 10pt; color:#646464; }

 
package com.shagami.android.IntentTest;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class IntentTest extends Activity {

  final static public String ACTION_CROP = "com.android.camera.action.CROP";

  final static public int PICK_WALLPAPER_REQUEST = 128;
 
final static public int CROP_WALLPAPER_REQUEST = 129;
 
 
private Uri mImageUri = null;

  @Override
   
public void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView
(R.layout.main);
       
        Button b1 =
(Button) findViewById(R.id.Button01);

        b1.setText("SEND");
        b1.setOnClickListener
(new View.OnClickListener() {
     
     
public void onClick(View v) {
           
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
            shareIntent.setType
("text/plain");
            shareIntent.putExtra
(android.content.Intent.EXTRA_SUBJECT, "なんかテキスト");
            shareIntent.putExtra
(android.content.Intent.EXTRA_TEXT, "テキストなんちゃらかんちゃら");

            startActivity(Intent.createChooser(shareIntent, "送り先"));
     
}
    })
;
       
        Button b2 =
(Button) findViewById(R.id.Button02);
       
        b2.setText
("IMAGE SELECT");
        b2.setOnClickListener
(new View.OnClickListener() {
     
     
public void onClick(View v) {
       
final Intent pickWallpaper = new Intent(Intent.ACTION_GET_CONTENT);
        pickWallpaper.setType
("image/*").addCategory(Intent.CATEGORY_OPENABLE);
        startActivityForResult
(Intent.createChooser(pickWallpaper, getString(R.string.app_name)),PICK_WALLPAPER_REQUEST);
     
}
    })
;

        Button b3 = (Button) findViewById(R.id.Button03);
        b3.setText
("IMAGE CROP");
        b3.setOnClickListener
(new View.OnClickListener() {
     
     
public void onClick(View v) {
       
if ( mImageUri != null ) {
         
final Intent cropWallpaper = new Intent("com.android.camera.action.CROP");
          cropWallpaper.setData
(mImageUri);

          startActivityForResult(cropWallpaper, CROP_WALLPAPER_REQUEST);
       
}
      }
    })
;

        Button b4 = (Button) findViewById(R.id.Button04);
        b4.setText
("DELETE IMAGE");
        b4.setOnClickListener
(new View.OnClickListener() {
     
/*
       *  現状、確認なく削除するので大事なデータを選択しないほうがいいと思う。
       *
       */
     
public void onClick(View v) {
       
if ( mImageUri != null ) {
         
ContentResolver lContentResolver = getContentResolver();
         
          lContentResolver.delete
(mImageUri, null, null);
       
}
      }
    })
;

    }
 
 
final public static String IMAGE_URI = "IMAGE_URI";
 
 
private void load() {
   
SharedPreferences pm = PreferenceManager.getDefaultSharedPreferences(this);

    String uri = pm.getString(IMAGE_URI,"").trim();

    mImageUri = null;
   
if ( uri.length() != 0 ) {
     
mImageUri = Uri.parse(uri);
   
}
  }
 
 
@Override
 
protected void onResume() {
   
super.onResume();
   
    load
();
 
}
 
 
private void save() {
   
SharedPreferences pm = PreferenceManager.getDefaultSharedPreferences(this);

    if ( mImageUri != null ) {
     
String uri = mImageUri.toString().trim();
     
     
if ( uri.length() > 0 ) {
       
Editor editor = pm.edit();
       
        editor.putString
(IMAGE_URI, uri);
        editor.commit
();
     
}
    }
  }
 
 
@Override
 
protected void onPause() {
   
super.onPause();

    save();
 
}
 
 
protected void onActivityResult(int requestCode, int resultCode, Intent resultIntent) {
   
/*
     *  画像の選択結果の取得
     */
   
switch ( requestCode ) {
   
case  PICK_WALLPAPER_REQUEST:
     
switch ( resultCode ) {
     
case  RESULT_OK:
        mImageUri = resultIntent.getData
();
        Log.d
("IntentTest", "onActivityResult:"+mImageUri.toString().trim());
       
if ( mImageUri !=  null ) { 
         
save();
       
}
       
break;
     
default:
       
break;
     
}
     
break;
   
/*
     *  画像の抜き出し結果の取得
     */
   
case  CROP_WALLPAPER_REQUEST:
     
switch ( resultCode ) {
     
case  RESULT_OK:
//        Uri croppedImageUri = Uri.parse(resultIntent.getAction());
       
Log.d("IntentTest", "onActivityResult:CROP:ImageName:"+resultIntent.getAction().trim());
        TextView tv01 =
(TextView) findViewById(R.id.TextView01);
        tv01.setText
("CroppedImg:"+resultIntent.getAction().trim());
       
break;
     
default:
       
break;
     
}
     
break;
   
default:
     
break;
    
}
  }
}


Intent使うといろいろできる、と。

広告

About sato_c

小学生の頃にインベーダーゲームやPC-8001やApple][といったものを知ってしまい、それ以降ずーっとゲーム好き。でも、あんまりうまくはありません。 仕事は当初はゲーム関係のプログラムやサウンドをやっていましたが、WEB関係を通ったあと、遊技機関係のプログラムやサウンドをやっています。あまり節操がないのか。 現在はJavaですてきなコードを書けるように勉強中。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。