android 학습 노트(둘)

4376 단어 intentintent-filter
1. Intent(의도): 가장 간단한 응용은 다른Activity를 호출하고 추가 정보를 전달하는 것이다. 이외에 안드로이드가 제공하는 각종 구성 요소, 예를 들어 서비스, BroadCast Receiver와 Content Provider 등도 호출할 수 있다.
Intent는 명시적 Intent와 암시적 Intent로 나눌 수 있습니다.
명시적 Intent: 대상 어셈블리의 Intent를 명시적으로 나타냅니다.
Intent intent=new Intent();
intent.setClass(MainActivity.this,MyActivity.class);

//   Intent   setClassName  ,   <  >,<    >  
//intent.setClassName("com.onecm.intent", "com.onecm.intent.MyActivity");  
startActivity(intent);

참고: 위의 기본 방법을 사용하여 최소한 Manifest 파일에 Activity 이름을 등록해야 합니다. 그렇지 않으면 시스템에서 Activity 이름을 찾을 수 없습니다.
<activity android:name="com.onecm.hello.MyActivity"><
/activity>
<!--            ,       android:permission=""-->
<activity android:name="com.onecm.hello.MyActivity" android:exported="true">
</activity>

암시적 Intent:
Intent intent=new Intent();
intent.setAction("com.onecm.hello");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
/*      manifest       action    activity,
     activity action              ,  action   <  ><intent.action><  >,
        
String actionName = "<  >.com.onecm.hello";  
Intent intent = new Intent(actionName);  */
 Manifest   activity  ,        


<activity android:name="com.example.hello.MyActivity"> 
<intent-filter> 
 <action android:name="com.onecm.hello"></action><!-- category.DEFAULT             ,
     ,         activity   ,        category          --> 
<category andorid:name="android.intent.category.DEFAULT">
 </category> 

</intent-filter>
</activity>

2. inter-filter(의도 필터)
IntentFilter 객체는 어셈블리에서 응답하고 처리할 수 없는 Intent를 필터링하여 자신의 관심 있는 Intent만 수신하여 처리합니다.IntentFilter는 어셈블리가 원하는 Intent만 나열하지만 IntentFilter는 암시적 Intent만 필터링하고 명시적 Intent는 대상 어셈블리로 직접 전달됩니다.Android 어셈블리에는 하나 이상의 IntentFilter가 있을 수 있으며 각 IntentFilter는 서로 독립적이며 검증 중 하나만 통과하면 됩니다.브로드캐스트 필터링에 사용되는 IntentFilter를 제외한 다른 IntentFilter는 AndroidManifest에 있어야 합니다.xml 파일에서 설명합니다.
1. 액션 테스트
요소에는 다음과 같은 하위 요소 이 포함될 수 있습니다.
<intent-filter> <action android:name="com.example.project.SHOW_CURRENT" />
 <action android:name="com.example.project.SHOW_RECENT" /> 
 <action android:name="com.example.project.SHOW_PENDING" /> 
 </intent-filter>

요소는 최소한 을 포함해야 합니다. 그렇지 않으면 어떤 Intent 요청도 이 와 일치할 수 없습니다.
만약 Intent가 요청한 Action이 중의 어떤 과 일치한다면, 이 Intent는 이 의 동작 테스트를 통과할 것입니다.
Intent 요청이나 에서 구체적인 Action 유형을 설명하지 않으면 다음과 같은 두 가지 상황이 발생합니다.
(1) 에 Action 형식이 포함되지 않으면 어떤 Intent 요청도 이 와 일치할 수 없습니다.
(2) 반대로 Intent 요청에 Action 형식이 설정되어 있지 않으면 에 Action 형식이 포함되어 있으면 이 Intent 요청은 의 행위 테스트를 순조롭게 통과할 수 있습니다.
2. 카테고리 테스트
요소는 하위 요소를 포함할 수 있습니다. 예를 들어 다음과 같습니다.
<intent-filter> 
<category android:name="android.Intent.Category.DEFAULT" /> 
<category android:name="android.Intent.Category.BROWSABLE" />
 </intent-filter>

Intent 요청의 모든Category가 구성 요소의 한 IntentFilter의 와 완전히 일치할 때만 이 Intent 요청이 테스트를 통과하도록 합니다. IntentFilter의 여분의 성명은 일치에 실패하지 않습니다.클래스 테스트를 지정하지 않은 IntentFilter는 클래스를 설정하지 않은 Intent 요청만 일치합니다.
3. 데이터 테스트
에서 데이터에 대한 설명은 다음과 같습니다.
<intent-filter> 
<data android:type="video/mpeg" android:scheme="http"/>
 <data android:type="audio/mpeg" android:scheme="http"/> 
 </intent-filter>

요소는 받아들일 Intent 요청의 데이터 URI와 데이터 형식을 지정합니다. URI는 세 부분으로 나뉘어 일치합니다: scheme, authority, path.여기서 setData()로 설정된 Intent 요청의 URI 데이터 유형과 scheme는 IntentFilter에서 지정한 것과 일치해야 합니다.IntentFilter에 authority나 path가 지정되어 있으면, 그것들도 일치해야만 테스트를 통과할 수 있습니다.

좋은 웹페이지 즐겨찾기