'Intent'에 해당되는 글 1건

  1. 2010.01.19 암시적 인텐트 (3)
암시적 인텐트를 사용해봅니다.

이것은 주로 어플리케이션 간에 인텐트를 파이어할 경우 사용합니다.

암시적 인텐트를 사용하기 위해서는 수신측 액티비티에서 인텐트 필터가 필요합니다.

그리고 인텐트 필터는 반드시 android.intent.category.DEFAULT 를 포함해야 합니다.

세개의 APP 를 만들었습니다.

A :  인텐트 파이어
B : 인텐트 수신 

A 코드

public class IntentTestA extends Activity {
private Button buttonB;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        buttonB = (Button)findViewById(R.id.fireButtonB);
        buttonB.setOnClickListener(new View.OnClickListener() {
        
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent("com.sh.android.testB.DEFAULT");
//intent.setClassName("com.sh.android.testB", "com.sh.android.testB.IntentTestB"); 명시적 인텐트로
/// 다른 어플리케이션으로 인텐트를 파이어할 수도 있다.
intent.putExtra("From", "A");
startActivity(intent);
}
});
      
        
    }
    
    
}

B 코드

public class IntentTestB extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String test;
        if((test = getIntent().getStringExtra("From")) != null) {
         Toast t = Toast.makeText(getApplicationContext(), test, Toast.LENGTH_SHORT);
        
         t.show();
        }
    }
}

B 의 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      android:versionCode="1"
      android:versionName="1.0" package="com.sh.android.testB">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".IntentTestB"
                  android:label="@string/app_name">
           
       <intent-filter>
          <action android:name="com.sh.android.testB.DEFAULT"></action>
        <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

    </application>
    <uses-sdk android:minSdkVersion="5" />

</manifest> 

메니페스트에서 볼 수 있듯이 DEFAULT 카테고리를 포함하고 액션을 지정해 주고 

파이어하는 쪽 ( A ) 에서 저 액션을 파라미터로 넣어서 인텐트를 생성하면 됩니다.

추가적으로 테스트 해 본 것이 다른 어플리케이션이지만 패키지이름과 액션이름이 같을 때입니다.

그럴 때는 해당 액션을 넣어서 인텐트를 날리면 두 애플리케이션 중 선택할 수 있는 메뉴를 띄어 줍니다.


Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon louis Vuitton replica 2012.09.07 16:57  댓글주소  수정/삭제  댓글쓰기

    블로그 랭킹에 들어있는 인기블로거들에 대해서 1년전 쯤 포스팅