2011-11-05 10 views
66

URIを使用するためにURI-Objectをインテントに渡そうとしています 別のアクティビティで...URIをインテントに渡す方法は?

どのようにURIを渡しますか?

private Uri imageUri; 
.... 
Intent intent = new Intent(this, GoogleActivity.class); 
intent.putExtra("imageUri", imageUri); 
startActivity(intent); 
this.finish(); 

他のアクティビティでこのURIを使用するにはどうすればよいですか?

imageUri = extras.getString("imageUri"); // I know thats wrong ... 

あなたは、文字列

intent.putExtra("imageUri", imageUri.toString()); 

としてURIを格納し、戻ったばかりのこの

Uri myUri = Uri.parse(extras.getString("imageUri")); 
+0

可能重複[アンドロイドで意図から余分なデータを取得するには?] (http://stackoverflow.com/questions/4233873/how-to-get-extra-data-from-intent-in-android) –

+0

可能な複製[オブジェクトをあるAndroidのアクティビティから別のAndroidのアクティビティにインテントで送信する方法は? ](http://stackoverflow.com/questions/2) 139134/how-to-one-android-activity-to-another-using-intents) – Craigy

答えて

142

ありがとう そして、あなたはこのようにそれを取得することができます:あなたはIntent

// Add a Uri instance to an Intent 
intent.putExtra("imageUri", uri); 

// Get a Uri from an Intent 
Uri uri = intent.getParcelableExtra("imageUri"); 

から直接それを追加して抽出することができるように

imageUri = Uri.parse(extras.getString("imageUri")); 
+1

ok cool ...しかし、私は文字列としてuriを格納する方法を知らない:( –

+0

上記のコードでは、文字列に変換されています。イメージリー。toString()はuriを文字列に変換します。 – Rufflez

+1

@malclockeはより良い解決策を持っています。手動で文字列に変換する必要はありません。 – clocksmith

0
private Uri imageUri; 
.... 
Intent intent = new Intent(this, GoogleActivity.class); 
intent.putExtra("imageUri", imageUri.toString()); 
startActivity(intent); 
this.finish(); 


のようなURIに文字列を変換することができ、みんな

119

Uriクラスは、あなたが任意のオブジェクトに対して同じメソッドを使用することができ、Parcelableを実装Parcelableを実装しており、必要に応じて自分のオブジェクトにParcelableを実装することができます。

+7

今後誰かにヒント: 'java.net.URI'ではなく' android.net.Uri'を使用していることを確認してください! –

+3

今後の参考として、 'intent.putExtras(bundle);'を使用する前にBundleオブジェクトにいくつかの追加機能を追加する場合は、 'intent.putExtra()を使用する代わりに' bundle.putParcelable( "imageUri"、uri); ' ...); '' Intent'オブジェクトの中で直接実行します。 – Armando

38

インテントでは、Uriを直接入れることができます。 Uriを文字列に変換してUriに再度変換する必要はありません。

この簡単なアプローチを見てください。

// Put the uri to intent 
intent.setData(imageUri); 

と意図から戻ってURIを取得する:

// Get the Uri from Intent 
Uri imageUri = getIntent().getData(); 
+12

あなたの投稿を+1するように読者に明示的に質問することは、私にとって疑わしい習慣に思えます。あなたのソリューションの付加価値は、それ自体のために話すべきではありませんか? –

-1

あなたはこのように行うことができます。 imageuriはこのように文字列に変換できます。

intent.putExtra( "imageUri"、imageUri.toString());

0

ここではどのように使用しますか。 私は呼んで私のCameraActionActivity Activityクラスのカメラ

btn_frag_camera.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intenImatToSec = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
       startActivityForResult(intenImatToSec, REQUEST_CODE_VIDEO); 
       //intenImatToSec.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
       //intenImatToSec.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10); 
       //Toast.makeText(getActivity(), "Hello From Camera", Toast.LENGTH_SHORT).show(); 
      } 
     }); 



@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == RESULT_OK) { 

      if (requestCode == REQUEST_CODE_IMG) { 
       Bundle bundle = data.getExtras(); 
       Bitmap bitmap = (Bitmap) bundle.get("data"); 
       Intent intentBitMap = new Intent(getActivity(), DisplayImage.class); 
       // aldıgımız imagi burda yonlendirdiğimiz sınıfa iletiyoruz 
       ByteArrayOutputStream _bs = new ByteArrayOutputStream(); 
       bitmap.compress(Bitmap.CompressFormat.PNG, 50, _bs); 
       intentBitMap.putExtra("byteArray", _bs.toByteArray()); 
       startActivity(intentBitMap); 

      } else if (requestCode == REQUEST_CODE_VIDEO) { 
       Uri videoUrl = data.getData(); 
       Intent intenToDisplayVideo = new Intent(getActivity(), DisplayVideo.class); 
       intenToDisplayVideo.putExtra("videoUri", videoUrl.toString()); 
       startActivity(intenToDisplayVideo); 
      } 
     } 
    } 

そして、私の他のDisplayVideo Activityクラス内のこのボタン

VideoView videoView = (VideoView) findViewById(R.id.videoview_display_video_actvity); 
Bundle extras = getIntent().getExtras(); 
     Uri myUri= Uri.parse(extras.getString("videoUri")); 
     videoView.setVideoURI(myUri); 
関連する問題