암시적인텐트(Implcit Intent) 전화걸기와 브라우저호출
안드로이드에서 유용하게 쓰이는 인텐트에 대해서 알아볼것입니다.
안드로이드에서는 인텐트를 통해 다른 화면 또는 다른 앱을 불러올수있는 기능을 하는 클래스 입니다.
인텐트에는 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent) (혹은 묵시적이라고도함) 카테고리로 나누어져 있습니다.
명시적 인텐트 (Explicit Intent)
명시적 인텐트 파라미터로 실행할 다음 엑티비티의 클래스이름을 넘겨주어 새 엑티비티를 실행하는 인텐트를 말합니다.
Intent intent = new Intent(Context context,실행할 새 엑티비티.class)
startActivity(intent);
암시적 인텐트(Implicit Intent)
암시적 인텐트는 다른 기능을하는 앱을 호출할수있는 기능입니다.
예를 들어 사이트의 url를 가지고 있고 이 url을 다른 브라우저 앱으로 실행을 시키고 싶다고 하면
Intent intent =
new Intent(Intent.ACTION_VIEW,Uri.parse(url주소));
startActivity(intent);
와 같이 실행할수있습니다.
전화번호를 통해서 전화앱을 호출하고 싶다고 가정합니다.
안드로이드에서는 전화앱 호출에도 두가지를 제공합니다.
1.전화를 걸지않고 번호까지만 입력해준다.
Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse(“tel:”+“전화번호”));
startActivity(intent);
2. 전화번호를 입력하고 바로 걸어준다.
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse(“tel:”+“전화번호”));
startActivity(intent);
인텐트들의 목록은 다음의 개발자 Reference에서 확인할수 있습니다.
http://developer.android.com/intl/ko/reference/android/content/Intent.html
이제 실습을 통해서 Intent를 알아보겠습니다.
다음과 같이 Ui 배치를 하겠습니다.
첫번째 핸드폰 번호가 들어있는 TextView의 Id는 num_textView
두번째 사이트의 주소가 들어있는 TextView의 Id는 url_textView로
각각의 id를 정했습니다.
이전 시간에 버튼에 클릭이벤트를 넣는 방법을 배웠었는데 텍스트 뷰 또한 View이기 때문에 버튼과 같은 방법으로 진행하면됩니다.
TextView들을 findViewById로 연결하고 클릭이벤트들 연결해준 상태에서 시작하겠습니다. 처음 보신분들은 이전강의를 먼저 보시는것을 추천합니다.
public class MainActivity extends AppCompatActivity {
TextView num_textView;
TextView url_textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
num_textView = (TextView)findViewById(R.id.num_textView);
url_textView = (TextView)findViewById(R.id.url_textView);
num_textView.setOnClickListener(mClickListener);
url_textView.setOnClickListener(mClickListener);
}
View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.num_textView :
break;
case R.id.url_textView :
break;
}
}
};
}
위에서 예로 들었던 url을 브라우저로 호출하는것과
전화번호를 전화 앱에 입력하는 기능을 할것입니다.
웹브라우저 호출
Intent intent =
new Intent(Intent.ACTION_VIEW,Uri.parse(url주소));
startActivity(intent);
전화를 걸지않고 번호까지만 입력해준다.
Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse(“tel:”+“전화번호”));
startActivity(intent);
다음의 기능을 코드에 추가하겠습니다.
View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.num_textView :
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+num_textView.getText().toString()));
startActivity(intent);
break;
case R.id.url_textView :
Intent intent2 = new Intent(Intent.ACTION_VIEW, Uri.parse(url_textView.getText().toString()));
startActivity(intent2);
break;
}
}
};
에뮬레이터로 실행을 해보면
번호 클릭시
번호 클릭시
인터넷 주소를클릭시
이렇게 동작하는것을 볼수있습니다. 지금 배운것을 암시적 인텐트(Implicit Intent)라고 합니다.
다음 강좌에 이어서 명시적 인텐트를 통한 엑티비티 화면전환에 대해 알아보겠습니다.