본문 바로가기
Android

Android [공유인텐트]

by leopard4 2023. 2. 7.

휴대폰에 깔려있는 공유인텐트를 사용할수있다.

manifests파일에 MAIN 부분이 다름

Intent intent = new Intent(Intent.ACTION_PICK);

이런식으로 치면 PICK 으로 되어있는 액티비티들이 리스트로 뜬다 

사용자는 선택할수있다.

 

MainActivity 공유 인텐트 사용 예시들

package com.leopard4.intentapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {


    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                selectContact();
//                openWebPage("http://www.naver.com");
//                composeSMS("111-1111-1111");
//                composeEmail(new String[]{"abc@naver.com", "abc@gmail.com"}, "테스트 이메일 입니다.");
//                shareText("공유할 텍스트");
//                shareImage(Uri.parse("https://block-yh-test2.s3.ap-northeast-2.amazonaws.com/2023-01-12T15_46_28.062874.jpg"));
            }
        });
    }
    // 연락처 선택하는 액티비티 띄위기
    void selectContact(){
        Intent intent = new Intent(Intent.ACTION_PICK); // 액션이 PICK으로 되어있고
        intent.setType(ContactsContract.Contacts.CONTENT_TYPE); // 인텐트타입이 연락처 타입
        startActivities(new Intent[]{intent}); // 액티비티를 띄우는데, 인텐트를 배열로 넣어준다.
    }
    // 웹브라우저 실행시키는 인텐트
    void openWebPage(String url){
        Uri uri = Uri.parse(url);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri); // 액션이 VIEW로 되어있고 인텐트타입이 uri
        startActivity(intent);
    }
    // SMS 보내기위한 화면
    void composeSMS(String phone){
        Uri uri = Uri.parse("smsto:" + phone);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }
    // 이메일 작성하는 액티비티 띄우기
    void composeEmail(String[] address, String subject){
        Uri uri = Uri.parse("mailto:");
        Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setData(uri);
        intent.putExtra(Intent.EXTRA_EMAIL, address);
        intent.putExtra(Intent.EXTRA_SUBJECT, subject);
        startActivity(intent);
    }
    // 문자열 공유 인텐트
    void shareText(String text){
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(Intent.EXTRA_TEXT, text);
        startActivity(intent);
    }
    // 이미지 공유 인텐트
    void shareImage(Uri imageUri) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("image/*");
        intent.putExtra(Intent.EXTRA_STREAM, imageUri);
        startActivity(intent);
    }
}