-
[Android]안드로이드 앱에 SNS공유 기능 넣기(with 인스타그램 링크)Development/Android 2016. 12. 23. 18:41반응형
테스트환경
개발툴
안드로이드 스튜디오 2.2.3
안드로이드버전
6.0.1 (마쉬멜로)
기기명
삼성 갤럭시노트 4S(SM-N916L)
테스트날짜
2016-12-23
이번에는 인스타그램을 공유해보도록 하죠!인스타그램 역시 스팸을 방지하기 위해 이미지를 공유하는 openAPI를 별도로 제공하고 있지는 않습니다.
그러므로 개발자 페이지 가입, 키 발급, 엑세스 토큰 발급 등의 절차가 필요가 없죠.
안드로이드 소스에서만 처리가 가능하므로 복,붙 하셔서 그대로 사용하시면 됩니다.
※단, 텍스트는 지원하지 않습니다. (오직 이미지만 되네요..)
AndroidManifest.xml에 다음 권한을 추가합니다.
public void shareInstagram()
{
//외부저장 권한 요청(안드로이드 6.0 이후 필수)
onRequestPermission();
if(permissionCheck) {
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
String storage = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "이미지명.png";
String folderName = "/폴더명/";
String fullPath = storage + folderName;
File filePath;
try {
filePath = new File(fullPath);
if (!filePath.isDirectory()) {
filePath.mkdirs();
}
FileOutputStream fos = new FileOutputStream(fullPath + fileName);
bm.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/*");
Uri uri = Uri.fromFile(new File(fullPath, fileName));
try {
share.putExtra(Intent.EXTRA_STREAM, uri);share.putExtra(Intent.EXTRA_TEXT, "텍스트는 지원하지 않음!");
share.setPackage("com.instagram.android");
startActivity(share);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "인스타그램이 설치되어 있지 않습니다.", Toast.LENGTH_SHORT).show();} catch (Exception e) {
e.printStackTrace();
}
}
}이미지는 안드로이드 프로젝트 내부에 있는 이미지만 가능하므로 참고바랍니다!
그리고 안드로이드 6.0 버전 이후부터는 권한 없이 저장소 읽기/쓰기가 안되므로 필히 다음과 같은 메소드를 넣어주셔야 합니다.
//permissionRequestCode
private static final int REQUEST_EXTERNAL_STORAGE_CODE = 1;
boolean permissionCheck = false;public void onRequestPermission()
{
int permissionReadStorage = ContextCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.READ_EXTERNAL_STORAGE);
int permissionWriteStorage = ContextCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if(permissionReadStorage == PackageManager.PERMISSION_DENIED
|| permissionWriteStorage == PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_EXTERNAL_STORAGE_CODE);
}
else {
permissionCheck = true; //이미 허용되어 있으므로 PASS
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_EXTERNAL_STORAGE_CODE:
for (int i = 0; i < permissions.length; i++) {
String permission = permissions[i];
int grantResult = grantResults[i];
if (permission.equals(Manifest.permission.READ_EXTERNAL_STORAGE)) {
if(grantResult == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "허용했으니 가능함", Toast.LENGTH_LONG).show();
permissionCheck = true;
} else {
Toast.makeText(this, "허용하지 않으면 공유 못함 ㅋ", Toast.LENGTH_LONG).show();
permissionCheck = false;
}
}
}
break;
}
}<실행화면>
완성본을 보시려면 '에브리타이머' 앱을 다운받아 확인하실 수 있습니다^^
(관련글 및 다운로드 : http://citynetc.tistory.com/145)
350
앱 다운로드 : https://play.google.com/store/apps/details?id=com.handykim.nbit.everytimerfree
개발된 앱 정보 보기 : http://citynetc.tistory.com/146
아래글도 참고하세요^^
2016/12/23 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 라인)
2016/12/20 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 카카오링크)
2016/12/21 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 페이스북 링크)
2016/12/22 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 트위터 링크)
반응형'Development > Android' 카테고리의 다른 글
[안드로이드]DDMS db에러 100% 해결법 (0) 2018.04.24 [안드로이드] 6.0/7.0 버전에 대응하는 방해금지 권한 허용 (0) 2017.10.24 [안드로이드]커스텀 다이얼로그 해상도 비율에 맞게 크기 조절하기 (0) 2017.09.29 [Android]안드로이드 - 앱을 설치할 수 없음 505에러 뜨는 원인 (0) 2016.12.24 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 라인) (0) 2016.12.23 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 트위터 링크) (1) 2016.12.22 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 페이스북 링크) (6) 2016.12.21 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 카카오링크) (2) 2016.12.20 [Android]SQLite db에 이미지(비트맵,Drawable) 저장(읽기,쓰기) 하는 법 (3) 2016.11.03 [Android]안드로이드 버전에 따른 AlarmManager 사용법 (6) 2016.09.29