안드로이드 다른 앱과 상호작용하기

프로그래밍/Android 2013. 8. 28. 23:18

안드로이드 다른 앱과 상호작용하기


Implicit Intent (암시적 인텐트)

- 암시적 인텐트는 시작해야할 클래스 이름이 필요하지 않다.


전화걸기

Uri number = Uri.parse( "tel:5551234");

Intent callIntent = new Intent( Intent.ACTION_DIAL, number);



지도 띄우기

// Map point based on address

Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");

// Or map point based on latitude/longitude

// Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); // z param is zoom level

Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);



웹 페이지 띄우기

Uri webpage = Uri.parse("http://www.android.com");

Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);


추가 데이터는 Inent 의 putExtra() 메소드로 추가한다.


메일 보내기

Intent emailIntent = new Intent(Intent.ACTION_SEND);

// Intent 가 URI 를 갖지 않으므로 "text/plain" MIME type으로 설정한다.

emailIntent.setType(HTTP.PLAIN_TEXT_TYPE);

emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon@example.com"}); // recipients

emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");

emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message text");

emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment"));

// 첨부파일이 여러개일 경우 첨부파일 Uri 를 ArrayList 에 담아 설정한다.



달력 일정 (API level 14)

Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);

Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30); // 2012/01/19 07:30

Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);  // 2012/01/19 10:30

calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());

calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());

calendarIntent.putExtra(Events.TITLE, "Ninja class");

calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");



Intent 를 처리할 앱이 있는 확인하는 방법

PackageManager packageManager = getPackageManager();

List<ResolveInfo> activities = packageManager.queryIntentActivities( intent, 0);

boolean isIntentSafe = activities,size() > 0;



Intent 의 설정이 완료됬으면 startActivity( Intent); 호출한다.


지도 띄우기 소스

// Build the intent

Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");

Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);


// Verify it resolves

PackageManager packageManager = getPackageManager();

List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);

boolean isIntentSafe = activities.size() > 0;

  

// Start an activity if it's safe

if (isIntentSafe) {

    startActivity(mapIntent);

}



Intent 를 처리할 앱 선택 화면 띄우기



Intent intent = new Intent(Intent.ACTION_SEND);

...


// Always use string resources for UI text.

// This says something like "Share this photo with"

String title = getResources().getString(R.string.chooser_title);

// Create and start the chooser

Intent chooser = Intent.createChooser(intent, title);

startActivity(chooser);


: