다양한 구글 기본 앱 연동 (with INTENT call)
다양하게 지원되는 구글의 기본앱과 기타 앱을 Intent를 통해 실행하는 기본 코드를 정리해서 올려둔다. 급할 때 유용하게 사용할 수 있을 것 같다.
1) 주소록 앱
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setData(ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, 10); //결과를 되돌려 받기 위해 startActivityForResult()를 사용하고 onActivityResult를 Override해서 값을 처리하면 된다.
2) 카메라 앱
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 30); //마지막 인자 30은 request code로 onActivityResult()에서 사용하기 위해서 넣는다.
//동영상일 경우
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,0);
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 20);
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024*1024*10);
intent.putExtra(MediaStore.EXTRA_OUTPUT, videoURI);
startActivityForResult(intent, 20);
3) 갤러리 앱
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(MediaStore.Images.Media.CONTENT_TYPE);
intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 20);
4) 음성인식 앱
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "음성 인식 테스트");
startActivityForResult(intent, 50);
5) 지도 앱
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo: 37.211232, 126.232323"));
startActivity(intent);
6) 브라우저 앱
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("htts://m.naver.com"));
startActivity(intent);
7)전화 앱
AndroidManifest.xml에 권한 추가
<user-permission android:name="android.permission.CALL_PHONE" />
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:02-120"));
startActivity(intent);
★★ 사용자의 스마트폰에 인텐트에 반응할 액티비티가 있는지 미리 확인하여 예외 처리 적용 ★★
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);
if (activities.size() != 0) {
//있을 경우 처리
} else {
//없을 경우 처리
}
PackageManager 클래스의 queryIntentActivities()함수를 이용해서 확인 가능.
'프로그래밍 > Android' 카테고리의 다른 글
Failed to resolve: play-services-basement (0) | 2018.10.30 |
---|---|
안드로이드 키보드 숨김/보임 처리 (0) | 2018.10.25 |
인텐트 필터(Intent Filter) (0) | 2018.10.24 |
DisplayMetrics 객체의 스마트폰의 크기 정보 구하기 (0) | 2018.10.23 |
AttributeSet 객체의 속성 리스트 출력 (0) | 2018.10.23 |