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