Use Intent to Get Media content
Description
The following code shows how to Use Intent to Get Media content.
Example
Register permission
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.examples.mediastore"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="19" />
<!-- Necessary for constructing a MediaStore Uri on external storage -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
Main layout xml file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/imageButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Images" />
<Button
android:id="@+id/videoButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Video" />
<Button
android:id="@+id/audioButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Audio" />
</LinearLayout>
Main Activity Java code
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
/*ww w.j a va2 s. com*/
public class MainActivity extends Activity implements View.OnClickListener {
private static final int REQUEST_AUDIO = 1;
private static final int REQUEST_VIDEO = 2;
private static final int REQUEST_IMAGE = 3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button images = (Button)findViewById(R.id.imageButton);
images.setOnClickListener(this);
Button videos = (Button)findViewById(R.id.videoButton);
videos.setOnClickListener(this);
Button audio = (Button)findViewById(R.id.audioButton);
audio.setOnClickListener(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == Activity.RESULT_OK) {
//Uri to user selection returned in the Intent
Uri selectedContent = data.getData();
if(requestCode == REQUEST_IMAGE) {
//Pass an InputStream to BitmapFactory
}
if(requestCode == REQUEST_VIDEO) {
//Pass the Uri or a FileDescriptor to MediaPlayer
}
if(requestCode == REQUEST_AUDIO) {
//Pass the Uri or a FileDescriptor to MediaPlayer
}
}
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
} else {
intent.setAction(Intent.ACTION_GET_CONTENT);
}
//Only return files to which we can open a stream
intent.addCategory(Intent.CATEGORY_OPENABLE);
//Set correct MIME type and launch
switch(v.getId()) {
case R.id.imageButton:
intent.setType("image/*");
startActivityForResult(intent, REQUEST_IMAGE);
return;
case R.id.videoButton:
intent.setType("video/*");
startActivityForResult(intent, REQUEST_VIDEO);
return;
case R.id.audioButton:
intent.setType("audio/*");
startActivityForResult(intent, REQUEST_AUDIO);
return;
default:
return;
}
}
}