'안드로이드 인텐트'에 해당되는 글 2건

  1. 2012.03.07 Android - 여가가지 Intent 활용 (1)
  2. 2011.10.19 Android - Activity 이동 ( Activity 간 페이지 이동 ) (3)

Android - 여가가지 Intent 활용

Android 2012.03.07 17:06

원문 : http://dislab.hufs.ac.kr/wiki/Android/Intent_%EC%82%AC%EC%9A%A9_%EC%98%88

내장 프로그램 띄우기

웹페이지 띄우기

Uri uri = Uri.parse("http://www.google.com");
Intent it  = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);

구글맵 띄우기

Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent it = new Intent(Intent.Action_VIEW,uri);
startActivity(it);


구글 길찾기 띄우기

Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=출발지주소&daddr=도착지주소&hl=ko");
Intent it = new Intent(Intent.ACTION_VIEW,URI);
startActivity(it);


SMS/MMS 발송

Intent it = new Intent(Intent.ACTION_VIEW);   
it.putExtra("sms_body", "The SMS text");   
it.setType("vnd.android-dir/mms-sms");   
startActivity(it);  
 
 
// SMS 발송
Uri uri = Uri.parse("smsto:0800000123");   
Intent it = new Intent(Intent.ACTION_SENDTO, uri);   
it.putExtra("sms_body", "The SMS text");   
startActivity(it);  
 
 
// MMS 발송
Uri uri = Uri.parse("content://media/external/images/media/23");   
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra("sms_body", "some text");   
it.putExtra(Intent.EXTRA_STREAM, uri);   
it.setType("image/png");   
startActivity(it);


이메일 발송

Uri uri = Uri.parse("mailto:xxx@abc.com");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
 
 
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");   
it.putExtra(Intent.EXTRA_TEXT, "The email body text");   
it.setType("text/plain");   
startActivity(Intent.createChooser(it, "Choose Email Client"));  
 
 
Intent it = new Intent(Intent.ACTION_SEND);     
String[] tos = {"me@abc.com"};     
String[] ccs = {"you@abc.com"};     
it.putExtra(Intent.EXTRA_EMAIL, tos);     
it.putExtra(Intent.EXTRA_CC, ccs);     
it.putExtra(Intent.EXTRA_TEXT, "The email body text");     
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");     
it.setType("message/rfc822");     
startActivity(Intent.createChooser(it, "Choose Email Client"));   
 
 
// extra 추가하기
Intent it = new Intent(Intent.ACTION_SEND);   
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");   
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");   
sendIntent.setType("audio/mp3");   
startActivity(Intent.createChooser(it, "Choose Email Client"));
 
 
// 첨부파일을 추가하여 메일 보내기
Intent it = new Intent(Intent.ACTION_SEND);  
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");  
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");  
sendIntent.setType("audio/mp3");  
startActivity(Intent.createChooser(it, "Choose Email Client"));


설치 어플 제거

Uri uri = Uri.fromParts("package", strPackageName, null);   
Intent it = new Intent(Intent.ACTION_DELETE, uri);   
startActivity(it);


APK파일을 통해 제거하기

Uri uninstallUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);
 
 
// APK파일 설치
Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);



마켓에서 어플리케이션 검색

Uri uri = Uri.parse("market://search?q=pname:pkg_name");  
Intent it = new Intent(Intent.ACTION_VIEW, uri);  
startActivity(it);  
// 패키지명은 어플리케이션의 전체 패키지명을 입력해야 합니다.
 
 
// 마켓 어플리케이션 상세 화면
Uri uri = Uri.parse("market://details?id=어플리케이션아이디");  
Intent it = new Intent(Intent.ACTION_VIEW, uri);  
startActivity(it);
// 아이디의 경우 마켓 퍼블리싱사이트의 어플을 선택후에 URL을 확인해보면 알 수 있습니다.


구글 검색

Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString");

장치 사용

Camera

Intent intent2 = new Intent("android.media.action.IMAGE_CAPTURE");
imgUri = Uri.fromFile(photofile);
intent2.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
startActivityForResult(intent2, 1);


Video

Intent i = new Intent("android.media.action.VIDEO_CAPTURE");
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(videofile));
i.putExtra(android.provider.MediaStore.EXTRA_VIDEO_QUALITY, 0);
i.putExtra("android.intent.extra.durationLimit", 60);
startActivityForResult(i, 2);


Audio

Intent i = new Intent("android.provider.MediaStore.RECORD_SOUND");

음악 파일 재생

Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
returnIt = new Intent(Intent.ACTION_VIEW, playUri);


미디어파일 플레이 하기

Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri, "audio/mp3");
startActivity(it);
 
 
Uri uri = Uri.withAppendedPath(
  MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");   
Intent it = new Intent(Intent.ACTION_VIEW, uri);   
startActivity(it);


전화 걸기

Uri uri = Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL, uri);  
startActivity(it);  
 
 
Uri uri = Uri.parse("tel.xxxxxx");
Intent it = new Intent(Intent.ACTION_CALL,uri);
// 퍼미션을 잊지 마세요. <uses-permission id="android.permission.CALL_PHONE" />
 
원문 : http://www.jopenbusiness.com/tc/oss/entry/Android-Intent-%ED%99%9C%EC%9A%A9-%EC%82%AC%EB%A1%80

연락처 Intent

  • 연락처 조회
intent = new Intent(Intent.ACTION_VIEW, 
Uri.parse("content://contacts/people/" +
String.valueOf(contact.getId())));
startActivity(intent);
  • 연락처 등록
intent = new Intent(Intent.ACTION_INSERT, 
Uri.parse("content://contacts/people"));
startActivity(intent);
  • 연락처 수정
intent = new Intent(Intent.ACTION_EDIT, 
Uri.parse("content://contacts/people/" +
String.valueOf(contact.getId())));
startActivity(intent);
  • 연락처 삭제
intent = new Intent(Intent.ACTION_DELETE, 
Uri.parse("content://contacts/people/" +
String.valueOf(contact.getId())));
startActivity(intent);

전화 Intent

  • 권한 설정 (AndroidManifest.xml)
전화 걸기         : CALL_PHONE = "android.permission.CALL_PHONE"
긴급 통화  : CALL_PRIVILEGED =
"android.permission.CALL_PRIVILEGED"
폰 상태 읽기  : READ_PHONE_STATE =
"android.permission.READ_PHONE_STATE"
폰 상태 수정  : MODIFY_PHONE_STATE =
"android.permission.MODIFY_PHONE_STATE"
브로드케스팅 수신 : PROCESS_OUTGOING_CALLS =
"android.permission.PROCESS_OUTGOING_CALLS"
전화 걸기 이전  : ACTION_NEW_OUTGOING_CALL =
"android.intent.action.NEW_OUTGOING_CALL"
  • 전화걸기 화면
Intent intent = new Intent(Intent.ACTION_DIAL, 
Uri.parse("tel:" + TelNumber));
startActivity(intent);
  • 전화걸기
Intent intent = new Intent(Intent.ACTION_CALL, 
Uri.parse("tel:" + TelNumber));
startActivity(intent);

SMS Intent

  • 권한 설정 (AndroidManifest.xml)
수신 모니터링       : RECEIVE_SMS = "android.permission.RECEIVE_SMS"
읽기 가능  : READ_SMS = "android.permission.READ_SMS"
발송 가능  : SEND_SMS = "android.permission.SEND_SMS"
SMS Provider로 전송 : WRITE_SMS = "android.permission.WRITE_SMS"
 : BROADCAST_SMS = "android.permission.BROADCAST_SMS"
  • SMS 발송 화면
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("sms_body", "The SMS text");
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);
  • SMS 보내기
Intent intent = new Intent(Intent.ACTION_SENDTO, 
Uri.parse("smsto://" + contact.getHandphone()));
intent.putExtra("sms_body", "The SMS text");
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);

이메일 Intent

  • 이메일 발송 화면
Intent intent = new Intent(Intent.ACTION_SENDTO, 
Uri.parse("mailto:" + contact.getEmail()));
startActivity(intent);

브라우저 Intent

  • Browser에서 URL 호출하기
new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/"));
startActivity(intent);
  • 브라우저에서 검색
Intent intent = new Intent(Intent.ACT ION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "검색어");
startActivity(intent);

지도 Intent

  • 지도 보기
Uri uri = Uri.parse ("geo: 38.00, -35.03");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

안드로이드 마켓 Intent

  • 안드로이드 마켓에서 Apps 검색
Uri uri = Uri.parse("market://search?q=pname:전제_패키지_명");  
//--- 예) market://search?q=pname:com.jopenbusiness.android.smartsearch
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
  • 안드로이드 마켓의 App 상세 화면
Uri uri = Uri.parse("market://details?id=전제_패키지_명");
//--- 예) market://details?id=com.jopenbusiness.android.smartsearch
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

갤럭시S의 Intent

  • 패키지명과 클래스명으로 App 호출
intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("패키지명", "전체_클래스명"));
startActivity(intent);
  • 전화, SMS
  • 전화번호부 : com.android.contacts, com.sec.android.app.contacts.PhoneBookTopMenuActivity
  • 전화 : com.sec.android.app.dialertab, com.sec.android.app.dialertab.DialerTabActivity
  • 최근기록 : com.sec.android.app.dialertab, com.sec.android.app.dialertab.DialerTabDialerActivity
  • 메시지 : com.sec.mms, com.sec.mms.Mms
  • 이메일 : com.android.email, com.android.email.activity.Welcome
  • 일정 : com.android.calendar, com.android.calendar.LaunchActivity
  • 인터넷 : com.android.browser, com.android.browser.BrowserActivity
  • Google의 Android용 앱
  • 검색 : com.google.android.googlequicksearchbox, com.google.android.googlequicksearchbox.SearchActivity
  • 음성 검색 : com.google.android.voicesearch, com.google.android.voicesearch.RecognitionActivity
  • Gmail : com.google.android.gm, com.google.android.gm.ConversationListActivityGmail
  • 지도 : com.google.android.apps.maps, com.google.android.maps.MapsActivity
  • 위치찾기 : com.google.android.apps.maps, com.google.android.maps.LatitudeActivity
  • YouTube : com.google.android.youtube, com.google.android.youtube.HomeActivity
  • 토크 : com.google.android.talk, com.google.android.talk.SigningInActivity
  • Goggles : com.google.android.apps.unveil, com.google.android.apps.unveil.CaptureActivity
  • Google 번역 : com.google.android.apps.translate, com.google.android.apps.translate.HomeActivity
  • Reader : com.google.android.apps.reader, com.google.android.apps.unveil.CaptureActivity
  • Voice : com.google.android.apps.googlevoice, com.google.android.apps.googlevoice.SplashActivity
  • Google 별지도 : com.google.android.stardroid, com.google.android.stardroid.activities.SplashScreenActivity
  • 카메라 : com.sec.android.app.camera, com.sec.android.app.camera.Camera
  • TV : com.sec.android.app.dmb, com.sec.android.app.dmb.activity.DMBFullScreenView
  • Android 관리
  • 환경 설정 : com.android.settings, com.android.settings.Settings
  • 작업 관리자 : com.sec.android.app.controlpanel, com.sec.android.app.controlpanel.activity.JobManagerActivity
  • 마켓 : com.android.vending, com.android.vending.AssetBrowserActivity
저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 1 : Comment 1
  1. YJT 2012.05.04 13:12 신고 Modify/Delete Reply

    ^^ 완전 전문가시군요..

Write a comment


Android - Activity 이동 ( Activity 간 페이지 이동 )

Android 2011.10.19 00:50


페이지 이동 즉 보여주는 Activity에서 다른 Activity로 넘어가는 것을 의미합니다.
이제부터는 여러개의 java파일이 존재하게 됩니다.
즉 java 파일 한개당 한 Activity를 구성하고 있습니다.

Activity이동에서는 intent를 씁니다.
전화걸기에서 썼던 intent는 핸도픈의 기능을 사용할 때 쓰여지는 구문 입니다.

Intent에 대해서 간단하게 설명하자면 Activity끼리 서로 호출할 때 activiity 간에 통신을 위한 장치.
Activity 뿐만 아니라 서비스, CP, BR 등의 컴포넌트가 수행햐야 할 작업에 대한 정보를 가지며 작업 결과를 돌려 주기 위해서 사용된다.
인텐트는 메서드의 인수나 리턴값과 용도가 비슷하며 안드로이드의 컴포넌트끼리 통신하기 위한 메시지 시스템으로 정의할 수 있다.
하고고자 하는 작업에 대한 정보를 인텐트 객체에 설정.

 Intent()
 Intent(Intent o)
 Intent(String action, [Uri uri])
 Intent(Context package(context, Class<?> cls)
 Intent(String action, Uri uri, Context packageContext, Class<?> cls)

이들 중 액티비티의 클래스를 구현하는 컨텍스트와 호추할 액티비티의 크래스 정보가 인수로 전달되는 4번째 생성자가 주로 사용된다. 
이런 식으로 인텐트에 호추할 대상 컴포넌트가 분명히 명시되어 있는 것을 명식적 인텐트(Explicit intent)라고 하며 누가 호출된 것인지가 애초에 고정되어 있다. 이와 상반되는 인텐트를 암시적 인텐트(Implicit intent)
라고 하며, 주로 다른 응용 프로그램의 컴포넌트를 호출할 때 사용된다. 
Intent는 의도를 명확히 하기 위해 아주 복잡한 여러 가지 정보가 포함된다. 이 정보를 생성자로 전달하여 초기화할 수 있고 객체를 생성한 후에도 변도의 메서드로 이 정보를 변경하거나 조사할 수 있다.

액티비티 간의 페이지 이동할 때 호출하는 메소드는

void startActivity(Intent intent);

그리고 중요한 설정이 남아 있습니다.
Activity를 구성하는 자바파일을 생성하면 그 생성한 자바파일을 androidmanifest.xml에 Java파일을 등록해주어야 합니다.
androidmanifest.xml에 등록하는 방법과 설정하는 방법은 따로 설명한 글이 있으니 참조 바랍니다.
그럼 간단하게 Activity간 페이지 이동을 실습해 보겠습니다.

그러면 화면이동을 위해서 Java파일 2개와 Xml파일 2개를 추가해서 생성해주어야겠죠?
팁이 있따면 Java파일명과 xml파일명은 동일하게 해주시는게 작업하기 편하답니다.

1)Java파일 추가 생성법



2)Xml파일 추가 생성법

3)추가된 Java파일과 Xml파일



프로젝트 생성

Project name : ExamActivity
Build Target : Android 2.1
Package name : jsh.exam.activity
Create Activity : main
Min SDK Version : 7


src

main.java

package jsh.exam.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

//버튼 클릭 이벤트처리를 위해 OnClickListener 인터페이스 상속
public class main extends Activity implements OnClickListener {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // xml파일에 있는 버튼을 id값으로 불러와서 사용 , 버튼 텍스트 변경
  Button bt1 = (Button) findViewById(R.id.button1);
  bt1.setText("첫번째 페이지");

  Button bt2 = (Button) findViewById(R.id.button2);
  bt2.setText("두번째 페이지");

  // 버튼 클릭 이벤트 처리
  bt1.setOnClickListener(this);
  bt2.setOnClickListener(this);
 }

 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub

  // 클릭 될 버튼2개의 id값을 스위치구문으로 분기
  switch (v.getId()) {

  // 첫번쨰버튼 눌렷을 때
  case R.id.button1:
   
   //페이지 이동 구문
   Intent intetn1 = new Intent(this, page1.class);
   startActivity(intetn1);

   break;

  // 두번째 버튼 눌렷을 때
  case R.id.button2:
   //페이지 이동 구문
   Intent intetn2 = new Intent(this, page2.class);
   startActivity(intetn2);

   break;

  }

 }
}

page1.java

package jsh.exam.activity;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class page1 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
      //해당하는 xml파일 명으로 바꿔야함
        setContentView(R.layout.page1);
       
        TextView tv1 = (TextView) findViewById (R.id.textView1);
        tv1.setText("첫번째페이지입니다.");
    }
}


page2.java

package jsh.exam.activity;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class page2 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //해당하는 xml파일 명으로 바꿔야함
        setContentView(R.layout.page2);
       
        TextView tv1 = (TextView) findViewById (R.id.textView1);
        tv1.setText("두번째페이지입니다.");
    }
}


res

main.xml

 


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="
http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <Button
  android:text="Button"
  android:id="@+id/button1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"></Button>
 <Button
  android:text="Button"
  android:id="@+id/button2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"></Button>
</LinearLayout>


page1.xml



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="
http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <TextView
  android:layout_width="wrap_content"
  android:id="@+id/textView1"
  android:text="TextView"
  android:layout_height="wrap_content"
  android:textAppearance="?android:attr/textAppearanceLarge"></TextView>

</LinearLayout>


page2.xml


 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="
http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <TextView
  android:layout_width="wrap_content"
  android:id="@+id/textView1"
  android:text="TextView"
  android:layout_height="wrap_content"
  android:textAppearance="?android:attr/textAppearanceLarge"></TextView>

</LinearLayout>


AndroidManifest.xml  Activity추가 방법


Activity추가는 Activity파일을 상속받아서 화면에 보여질 Java파일을 다 추가해주어야합니다.
5개라면 5번 반복해주면 됩니다.

실행결과

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comments 3
  1. koike83 2012.07.16 02:13 신고 Modify/Delete Reply

    안녕하세요. 처음부터 쭉 따라하다가 액티비티 이동에서 문제가 발생했어요 ㅠㅠ.
    매니패스트에서 액티비티만 추가 하는 스샷이외에는 보이지 않는대요~ 제가 액티비티까지 추가를 다 했는데 그후로 디버깅에서

    Source not Found 가 뜨기시작했어요.. 디바이스 not Found 도 보이고요~ 근데 분명 Activity 하기전에 ListView 던가 Text Io
    디버깅은 문제 없이 됐거든요~

    어떻게 해결해야 되는지 방법좀 자세히 알려주세요!!!!! 부탁 드리겠습니다 ~^^


    mintsj2@naver.com 메일로 답변주시면

    전체 소스도 첨부해 드릴게요~

  2. ㅇㅇ 2013.03.20 20:20 신고 Modify/Delete Reply

    Run 하는데 오류가 났다는데 ...

Write a comment