Android.content.Intent
Intent를 사용한 Video 타입공유
Intent.createChooser()
를 사용하면 어플리케이션 선택시 '항상', '한번만' 버튼이 나타나지 않는다.
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("video/mp4");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(resultFilePath));
startActivity(Intent.createChooser(intent, getString(R.string.diallog_share_video)));
만약, intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));
와 같이 보낼 경우 E-Mail에 파일이 첨부되지 않을 수 있다.
동영상을 VideoView에서 구동하고 싶다면 아래와 같이 입력하면 된다.
VideoView videoView = (VideoView)findViewById(R.id.videoView1);
Uri uri = Uri.parse(MOVIE_URL);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start();
Intent를 사용한 미디어(갤러리)갱신
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
소스상에서 외부 어플리케이션 실행방법
intent = new Intent();
ComponentName cn = new ComponentName(패키지명, 엑티비티명);
intent.setComponent(cn);
startactivity(intent);
또는
또는
PackageManager pm = getPackageManager();
String packageName = "패키지명";
ApplicationInfo ai = null;
try {
ai = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
String labelName = pm.getApplicationLabel(ai).toString();
Intent intent = pm.getLaunchIntentForPackage(packageName);
startActivity(intent);
마켓 연동방법
/** 마켓으로 이동한다. */
public static void jumpMarket(Context c, String package_name) {
Uri uri = Uri.parse(kPlayStoreUrlPrefix + package_name);
c.startActivity(new Intent(Intent.ACTION_VIEW, uri));
}
외부어플 실행방법
/** 어플을 실행한다. */
public static void runApplication(Context c, String package_name) throws PackageManager.NameNotFoundException {
PackageManager pm = c.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(package_name);
if (intent == null) {
// Exception이 발생되지 않을 경우 직접 발생시킨다.
throw new PackageManager.NameNotFoundException("Package(" + package_name + ") not found.");
} else {
c.startActivity(intent);
}
}
INTENT를 통하여 MESSAGE를 보낸다
public static void sendMessageFromChooser(Context c, String title, String subject, String msg) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, msg);
c.startActivity(Intent.createChooser(intent, title));
}
INTENT를 통하여 MP4를 첨부한다
public static void sendMp4(Context c, String mp4path) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("video/mp4");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(mp4path)));
c.startActivity(intent);
}
Chooser를 사용한, INTENT를 통하여 MP4를 첨부한다
Chooser는, Intent를 통하여 팝업이 나타날 때, 확인/취소 버튼이 안나타난다.
public static void sendMp4FromChooser(Context c, String mp4path, String title) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("video/mp4");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(mp4path)));
c.startActivity(Intent.createChooser(intent, title));
}
특정 패키지에 해당하는 App으로 직접, INTENT를 통하여 MP4를 첨부한다
public static void sendMp4FromPackage(Context c, String mp4path, String pkgname) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("video/mp4");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(mp4path)));
intent.setPackage(pkgname);
c.startActivity(intent);
}
갤러리 호출하여 이미지를 선택하고 받아오는 방법
내장되어 있는 갤러리를 호출하여 사진을 선택 후 내가 어떤 사진을 선택했는지 URI로 가지고 데이터를 설정한다.
Intent i = new Intent(Intent.ACTION_PICK);
i.setType(android.provider.MediaStore.Images.Media.CONTENT_TYPE);
i.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); // images on the SD card.
startActivityForResult(i, REQ_CODE_PICK_PICTURE); // 결과를 리턴하는 Activity 호출.
갤러리 리스트뷰에서 사진 데이터를 가져오는 방법.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_CODE_PICK_PICTURE) {
if (resultCode == Activity.RESULT_OK) {
ImageView img = (ImageView) findViewById(R.id.image);
img.setImageURI(data.getData()); // 사진 선택한 사진URI로 연결하기
}
}
}
See also
- Android:Email: Intent를 사용한 Email 전송방법.
Favorite site
- 안드로이드 Intent 활용 예시
- 안드로이드 OS 공유기능 활용
- Handling Screen OFF and Screen ON Intents 1
- Intent를 이용하여 Email, MMS에 파일 첨부하여 전송 요청하기
- Stackoverflow: Checking if Facebook is installed on Android
- Android Activity 생성시에 사용되는 Intent Flag 정리 2
- 모바일 웹에서 액티비티 호출하기
- 안드로이드 Intent(인텐트) Filter를 사용해 보자
- Android Intent Filter