Intent関連

Intentを使ってファイルを別アプリで開く

画像、動画、音楽などのファイルを別アプリで開く。
Intentにアクションタイプを指定、アクティビティへIntentを渡す。
設定するパスは、パスからUriタイプへ変換すること。

例1:PDFファイルを開く場合
//インテントを投げる
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse("file://" + mUrl[i]),"application/pdf"); 
startActivity(intent);

例2:画像ファイルを開く
    //インテントを投げる
Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.fromFile(new File(mUrl[i]));
intent.setDataAndType(uri, "image/*"); 
startActivity(intent); 

例3:動画ファイルを開く(.mp4)
Uri uri = Uri.fromFile(new File(mUrl[i]));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setDataAndType(uri, "video/mp4");
startActivity(intent);



別のアクティビティへ画面遷移する

任意の異なるアクティビティへ画面遷移させる。
Intentに、Contextと遷移後のActivityクラス名を設定。


例1:単純な画面遷移
現在のActivityをACTIVE_ACTIVITY
遷移先のActivityをNEXT_ACTIVITY
とすると以下。

//次のアクティビティへ渡す
Intent intent = new Intent(ACTIVE_ACTIVITY.this, NEXT_ACTIVITY.class);	
//画面遷移
startActivity(intent);

例2:画面間でのデータのやり取りを含めた遷移 引数を渡す
文字列データをSTRING_DATA、文字列データの固有コード(任意)をSTRING_CODE
整数データをINT_DATA、整数データの固有コード(任意)をINT_CODE
とすると以下。

送り側
遷移先のActivityへストリングデータとイントデータを渡す

//次のアクティビティへ渡す
Intent intent = new Intent(ACTIVE_ACTIVITY.this, NEXT_ACTIVITY.class);
intent.putExtra("STRING_CODE", STRING_DATA);
intent.putExtra("INT_CODE", INT_DATA);
		
//画面遷移
startActivity(intent);

受け側
onCreateでインテントの値を取得する

//インテント取得
Intent intent = getIntent();
//文字列の取得
CharSequence string = intent.getCharSequenceExtra("STRING_CODE");
//整数の取得 デフォルト値6
int Number = intent.getIntExtra("INT_CODE", 6);

例3:画面間でのデータのやり取りを含めた遷移 戻り値を取得する
画面遷移時に、startActivityForResultで画面遷移する。

//戻り値ありで次のアクティビティへ遷移
startActivityForResult(intent, SUB_ACTIVITY_CODE);

遷移先のアクティビティ終了時に結果を戻す

Intent intent = new Intent();
   	intent.putExtra("MODE", "GO_HOME");
   	setResult(SUB_ACTIVITY_CODE, intent);
   	finish();

結果の受け取り方
onActivityResultでIntentから戻り値を取得する
⇒ファイルの選択などで使用。パスを取得する。

public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
	//サブアクティビティから戻り
	if(requestCode == SUB_ACTIVITY_CODE)
	{
		//値の取得
		String mode = intent.getExtras().getString("MODE");
	}
}

別アプリでファイルのパスを取得する

例:画像ファイルのパスをギャラリーなどのビューアプリを使って取得する。

Intent intent = new Intent();
//初期パスの指定・・・だけどできない様子
Uri uri = Uri.fromFile(new File("/DCIM"));
  	intent.setDataAndType(uri, "image/jpeg"); 
        
//↓戻り値付きで画面遷移   	
  	intent.setAction(Intent.ACTION_GET_CONTENT);
  	startActivityForResult(intent, 0);


アプリからの戻りをonActivityResultで取得する

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
   	
   	//ギャラリーの起動
   	if(requestCode == 0 && resultCode == RESULT_OK){
   		try{
   			//パスの取得
   			ContentResolver cr = getContentResolver();
   			String[] columns = {MediaColumns.DATA};
   			Cursor c = cr.query(data.getData(), columns, null, null, null);
   			c.moveToFirst();
   		
		String file_path = c.getString(0);
   		}catch(Exception e){
   			
   		}
    }
}
最終更新:2013年06月28日 08:00