Skip to content

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);

또는

intent.setPackage("com.kakao.talk");

또는

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

Favorite site

References


  1. Handling_screen_off_and_screen_on_intents.pdf 

  2. Intent_flag_list_arrangement.pdf