Android

Android 공유하기 - 네이버 관련

Machine_웅 2021. 1. 14. 14:35
728x90
반응형

< 네이버 블로그 >

public void share_naver_blog(){
        int version = 1;
        String title = "다른 앱에서 글을 씁니다.";
        String content = "콘텐츠입니다.";

        List<String> imageUrls = new ArrayList<>(); // 이미지 담기
        imageUrls.add("http://logoproject.naver.com/img/img_about.gif");

        List<String> videoUrls = new ArrayList<>(); // 비디오
        videoUrls.add("http://tvcast.naver.com/v/791662");
        videoUrls.add("http://tvcast.naver.com/v/791660");

        List<String> ogTagUrls = new ArrayList<>(); // ogTag 주소 Url
        ogTagUrls.add("http://m.naver.com");
        ogTagUrls.add("http://blog.naver.com");

        List<String> tags = new ArrayList<>();  // 테그
        tags.add("블로그앱");
        tags.add("scheme");

        new NaverBlog(MainActivity.this).write(version, title, content, imageUrls, videoUrls, ogTagUrls, tags);
    }
    

 

NaverBlog.class

package kr.co.eoapps.eo_module;

import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;

import org.json.JSONArray;

import java.util.List;

/**
 * Blog Scheme를 사용하기 위한 예시 class
 * version=1에서는 write만 존재합니다.
 * 차후 다양한 Scheme가 추가될 예정입니다.
 */
public class NaverBlog {
	public static final String APP_NAVER_APPSTORE = "com.nhn.android.appstore";
	public static final String BLOG_INSTALL_URL = "market://details?id=com.nhn.android.blog";
	public static final String BLOG_INSTALL_URL_NAVER = "appstore://store?version=7&action=view&packageName=com.nhn.android.blog";

	public static final String SCHEME_NAVERBLOG = "naverblog";
	public static final String AUTHORITY_WRITE = "write";
	public static final String QUERY_VERSION = "version";
	public static final String QUERY_TITLE = "title";
	public static final String QUERY_CONTENT = "content";
	public static final String QUERY_IMAGEURLS = "imageUrls";
	public static final String QUERY_VIDEOURLS = "videoUrls";
	public static final String QUERY_OGTAGURLS = "ogTagUrls";
	public static final String QUERY_TAGS = "tags";

	private Context context;

	public NaverBlog(Context context) {
		this.context = context;
	}

	/**
	 * 첨부 글쓰기 스키마
	 * @param version 버전
	 * @param title 제목
	 * @param content 내용
	 * @param imageUrls 이미지url
	 * @param videoUrls 동영상url
	 * @param ogTagUrls 오지링크url
	 * @param tags 태그
	 */
	public void write(
		int version,
		String title,
		String content,
		List<String> imageUrls,
		List<String> videoUrls,
		List<String> ogTagUrls,
		List<String> tags) {

		Uri writeUri = BlogUriBuilder.write(version, title, content, imageUrls, videoUrls, ogTagUrls, tags);
		Intent writeIntent = new Intent();
		writeIntent.setData(writeUri);
		try {
			context.startActivity(writeIntent);
		} catch (ActivityNotFoundException e) {
			gotoMarket();
		}
	}

	/**
	 * 마켓으로 이동
	 */
	public void gotoMarket() {
		// 네이버 앱스토어로 갈 수 없으면, 플레이 스토어로 이동
		if (!gotoNaverAppStore()) {
			gotoPlayStore();
		}
	}

	/**
	 * 네이버 앱스토어 이동
	 */
	public boolean gotoNaverAppStore() {
		if (isAppInstalled(APP_NAVER_APPSTORE)) {
			Intent intent = new Intent(Intent.ACTION_VIEW);
			intent.setData(Uri.parse(BLOG_INSTALL_URL_NAVER));
			context.startActivity(intent);
			return true;
		}

		return false;
	}

	/**
	 * 구글 플레이스토어 이동
	 */
	public void gotoPlayStore() {
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setData(Uri.parse(BLOG_INSTALL_URL));
		context.startActivity(intent);
	}

	/**
	 * 앱설치 확인
	 */
	public boolean isAppInstalled(String packname) {
		try {
			PackageInfo info = context.getPackageManager().getPackageInfo(
				packname, 0);
			if (info != null) {
				return true;
			}
		} catch (PackageManager.NameNotFoundException e) {
		}
		return false;
	}

	/**
	 * write Url Scheme 생성
	 * (List를 받아 jsonArray로 파싱하는 방식을 사용하였지만 처음부터 jsonArray로 만들어서 보내는 방법도 있습니다.)
	 */
	public static class BlogUriBuilder {
		public static Uri write(
			int version,
			String title,
			String content,
			List<String> imageUrls,
			List<String> videoUrls,
			List<String> ogTagUrls,
			List<String> tags) {

			Uri.Builder uriBuilder = new Uri.Builder();
			uriBuilder.scheme(SCHEME_NAVERBLOG);
			uriBuilder.authority(AUTHORITY_WRITE);
			uriBuilder.appendQueryParameter(QUERY_VERSION, String.valueOf(version));
			if (title != null && !title.isEmpty()) {
				uriBuilder.appendQueryParameter(QUERY_TITLE, title);
			}
			if (content != null && !content.isEmpty()) {
				uriBuilder.appendQueryParameter(QUERY_CONTENT, content);
			}

			appendArrayQueryParameter(uriBuilder, QUERY_IMAGEURLS, imageUrls);
			appendArrayQueryParameter(uriBuilder, QUERY_VIDEOURLS, videoUrls);
			appendArrayQueryParameter(uriBuilder, QUERY_OGTAGURLS, ogTagUrls);
			appendArrayQueryParameter(uriBuilder, QUERY_TAGS, tags);

			return uriBuilder.build();
		}

		public static void appendArrayQueryParameter(Uri.Builder uriBuilder, String queryString, List<String> list) {
			if (list == null) {
				return;
			}

			JSONArray jsArray = new JSONArray(list);
			uriBuilder.appendQueryParameter(queryString, jsArray.toString());
		}
	}
}

 

 

<네이버 까페>

    public void share_naver_cafe(){
        String subject = "안됨 뭐라고 막 써도 안됨";
        String contents = "https://naver.com"; // 링크를 넣으면 자동으로 링크로 인식해준다.
        String appId = "kr.co.eoapps.eo_module" ;// 이 앱의 패키지 명

        String content_url = "navercafe://write?" + "subject=" + subject + "&contents=" + contents + "&appId=" + appId;
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(content_url));
        startActivity(intent);

        /*
        *  만약에 지정된 카페가 있다면  네이버 카페 클래스를 이용하도록 하자.
        * */
    }
    

* 혹시 제목이나 사진 첨부에 대해서 아시는분 댓글 부탁드립니다 ㅠ

 

<네이버 밴드>

    public void share_naver_band(){
        Uri uri = Uri.parse("bandapp://create/post?text=<문자열>&route=<밴드 공유 버튼을 사용하는 서비스의 도메인>");
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);
    }
728x90
반응형