Android Intent-Filter 일치 규칙 분석

머리말
우 리 는 모두 알 고 있 습 니 다.활동 의 시작 방식 은 두 가지 가 있 습 니 다.하 나 는 시작 을 표시 하거나 간단 합 니 다.활동 의 class 를 지정 하면 됩 니 다.다른 하 나 는 암시 적 으로 시작 하 는 것 입 니 다.action,category,data 정 보 를 지정 해 야 합 니 다.예 를 들 어 우리 가 시스템 카 메 라 를 시작 할 때.코드 보기:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
    startActivityForResult(intent,1);
그 중의"android.media.action.IMAGE""CAPTURE"는 바로 카메라 의 action 입 니 다.이렇게 하면 카 메 라 를 시작 할 수 있 습 니 다.
암시 적 인 시작 은 우리 가 평소에 도 사용 하 는 것 이 비교적 적 고 자신 이 사용 하 는 Activity 에 대해 모두 시작 을 직접 표시 합 니 다.그럼 언제 스텔스 시동 을 걸 까요?일반적으로 다른 애플 리 케 이 션 의 activity 를 시작 할 때,예 를 들 어 위 에서 말 한 카메라.
위 에서 말 한 action,category,data 는 intent-filer,즉 필터 입 니 다.시작 할 activity 를 선별 합 니 다.
intentFiler 는 무슨 소 용이 있 습 니까?자신 에 게 꼬리 표를 달 아 주 는 것 과 같다.예 를 들 어 대학생 이라는 꼬리표 가 붙 어 있 으 면 학생 이 나 오 면 G 는 당신 과 일치 합 니 다.이것 이 바로 intentfiler 의 역할 입 니 다.일치 하 는 것 을 선별 하 는 데 사용 합 니 다.
그렇다면 이 세 가지 action,category,data 는 도대체 무엇 입 니까?그들의 구체 적 인 일치 규칙 은 또 어떤 것 입 니까?위 에서 말 한 intentFiler 는 다른 응용 프로그램 을 시작 하 는 데 사 용 됩 니 다.어떤 자주 사용 하 는 intentfiler 를 사용 할 수 있 습 니까?이제 한번 봅 시다.
intent Filter 의 구조
앞에서 말 한 intent Filter 는 action,category,data 세 가 지 를 포함 하고 있 습 니 다.코드 를 보고 익 혀 보 겠 습 니 다.

<intent-filter>
    <action android:name="huan"/>
    <category android:name="android.intent.category.DEFAULT"/>
   </intent-filter>
그리고 우리 가 가장 잘 아 는 것 도 포함한다.

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
이 세 가 지 는 각각 다른 의 미 를 나타 낸다.어떤 activity 를 시작 하려 면 이 속성 을 설정 해서 해당 하 는 activity 를 시작 하 십시오.우리 가 스스로 intentFiler 를 설정 할 때 도 그의 의미 성 을 주의해 야 한다.비록 많은 것 을 마음대로 설정 할 수 있 지만 변수 이름 처럼 함부로 시작 하지 마라.
Action
액 션 은 가장 간단 하고 자주 사용 되 는 것 이다.
  • 의미:이 매개 변 수 는 이 활동 을 시작 하려 면 무엇 을 해 야 하 는 지 를 나타 낸다.예 를 들 어 위의 카 메 라 는 android.media.action.IMAGE 입 니 다.캡 처,사진 찍 기 기능 이 뚜렷 하 다.action 의 본질 도 하나의 문자열 입 니 다.대소 문 자 를 포함 하여 모든 문자 가 같 아야 합 니 다.위 에서 말 했 듯 이 이 문자열 을 마음대로 쓸 수 있 지만 의미 가 있어 야 한다.
  • 일치 규칙:action 의 일치 규칙 도 간단 합 니 다.Intent 의 action 은 intent Filter 의 임의의 action 과 일치 하면 일치 합 니 다.그러나 Intent 의 action 이 비어 있다 면 일치 하 는 데 실 패 했 습 니 다.
  • Category
    이 매개 변 수 는 평소에 비교적 적 게 사용 하 는데,일반적으로 비교적 특수 한 상황 에서 만 사용 할 수 있다.
  • 의미:이 매개 변 수 는 평소에 사용 하 는 의 미 는 이 action 동작 을 실현 하 는 유형,즉 이 Intent 의 구성 요소 유형 에 응답 할 수 있 음 을 나타 낸다.예 를 들 어 위의 category android:name="android.intent.category.LAUNCHER"는 이 action 이 최상 위 에서 실 행 될 것 임 을 나타 낸다.무슨 뜻 일 까?바로 우리 가 앱 을 열 때마다 열 리 는 첫 번 째 activity 입 니 다.
  • 매 칭 규칙:여러 category 를 설정 할 수 있 습 니 다.그러나 intent 의 모든 category 는 intent Filter 의 한 category 와 일치 해 야 성공 할 수 있 습 니 다.
  • 주의:activity 에 intentFilter 를 설정 할 때 다른 category 가 없 으 면 category android:name="android.intent.category.DEFAULT"라 는 category 를 설정 해 야 합 니 다.이 유 는 startActivity 나 starActivity ForResult 라 는 두 가지 방법 이 실 행 될 때 intent 에 category 가 없 으 면'android.intent.category.DEFAULT'라 는 category 를 자동 으로 추가 하기 때 문 입 니 다.
  • Data
    data 는 세 가지 중에서 가장 복잡 한 것 으로 말 그대로 이 매개 변 수 는 데 이 터 를 전달 하 는 데 사용 된다.data 는 앞의 두 부분 과 다 릅 니 다.그 는 두 부분 으로 구성 되 어 있 습 니 다.Uri+mimeType.
    먼저 data 의 구성 을 살 펴 보 겠 습 니 다.
    
    <data android:scheme=""
         android:host=""
         android:port=""
         android:path=""
         android:pathPattern=""
         android:pathPrefix=""
         android:mimeType=""/>
    data 는 모두 7 개의 매개 변수 로 구성 되 어 있 습 니 다.각각 무슨 뜻 인지 알 아 보 겠 습 니 다.
  • scheme:이것 은 uri 를 나타 내 는 모델 로 가장 익숙 한 http://이것 이 바로 모델 입 니 다.또한 안 탁 중 에 흔히 볼 수 있 는 두 가지 가 있 습 니 다.content:/와 file:/입 니 다.ContentProvider 를 배 운 적 이 있 는 독자 들 은 content 모델 에 대해 잘 알 고 있 을 것 이다.
  • host,port:host 는 호스트 이 고 port 는 포트 번호 이 며 이 두 개 는 authority 라 고 합 니 다.예 를 들 면 www.baidu.com 이 라면 익숙 하 겠 죠.ContentProvider 에서 어떤 contentProvider 를 표시 합 니까?
  • path,pathPattern,pathPrefix:이 세 가 지 는 경로 정 보 를 표시 합 니 다.하 나 는 완전한 경로 이 고,다른 하 나 는 이미지/*와 같은 어댑터 로 표시 할 수 있 으 며,다른 하 나 는 경로 의 접두사 입 니 다.
  • mime Type:이것 은 미디어 유형 을 나타 낸다.예 를 들 어 image/jpeg
  • 그의 구 조 를 말 한 후에 어떤 독자 들 은 이 데이터 가 주소+파일 형식 이 아니 라 는 것 을 발견 할 수 있 습 니 다.네,uri 자체 가 주소 라 는 뜻 입 니 다.우 리 는 평소에 언제 데 이 터 를 사용 합 니까?예 를 들 어 우 리 는 카 메 라 를 호출 하여 사진 을 찍 고 지정 한 폴 더 에 저장 합 니 다.그러면 어떻게 카메라 에 주 소 를 알 리 죠?바로 data 입 니 다.우 리 는 intent 를 통 해 카 메 라 를 시작 하고 주 소 를 data 로 전송 합 니 다.이곳 의 uri 는 안 드 로 이 드 버 전의 영향 이 필요 하지 않 습 니 다.관심 있 는 독자 들 이 알 아 볼 수 있 습 니 다.
    그렇다면 데이터 의 일치 규칙 은 어 떨 까요?
    action 과 같 습 니 다.intent 에 data 가 있어 야 하고 intent Filter 의 하나 와 일치 하면 성공 할 수 있 습 니 다.
  • 주의:intent Filter 에 있 는 data 가 uri 를 설정 하지 않 았 다 면 기본 적 인 schme 는 content 와 file 입 니 다.
  • 인 텐트 필터 설정
    위 에서 intent Filter 의 세 가지 매개 변수 가 어떻게 일치 하 는 지 알 고 있 습 니 다.그러면 이벤트 에 intent Filter 를 어떻게 설정 하고 intent 에 인 자 를 어떻게 전송 하 는 지 아 세 요?이것 은 비교적 간단 하고 간단하게 말 할 수 있다.
    이벤트 에 intent Filter 를 설정 하 는 것 은 간단 합 니 다.AndroidManifest 에 설정 하면 됩 니 다.예제 코드 를 보 세 요.
    
    <activity android:name=".MainActivity">
       <intent-filter>
        <action android:name="android.intent.action.MAIN" />
    
        <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
      </activity>
    intent 에 인 자 를 설정 하 는 것 도 어렵 지 않 습 니 다.하나씩 보 세 요.
  • action:Intent 대상 을 새로 만 들 때 참고 할 수 있 습 니 다.예 를 들 어 Intent intent=new Intent("android.intent.action.GETCONTENT");또는 Intent 를 호출 하 는 setAction 방법:intent.setAction("android.intent.action.GETCONTENT");
  • caterogy:intent 의 방법 을 통 해 intent.addCategory();
  • data:이것 은 비교적 특수 하 다.왜냐하면 그 는 두 가지 부분 이 있 기 때문이다.uri 와 mime Type.세 가지 방법 이 있 습 니 다.그 중에서 setType 과 setData 는 각각 mime Type 과 uri 를 설정 합 니 다.하지만 이 두 가지 방법 은 각각 다른 데 이 터 를 비 울 것 이다.무슨 뜻 이 죠?예 를 들 어 저 는 setData 를 통 해 uri 를 설정 한 다음 에 setType 을 통 해 mimeType 을 설정 하면 첫 번 째 uri 가 없어 지고 삭 제 됩 니 다.그래서 세 번 째 방법 이 있 습 니 다.intent.setDataAndType.이 방법 은 두 개의 인자,uri 와 mime Type 을 받 아들 이 고 두 개의 인 자 를 동시에 설정 하면 제거 되 지 않 습 니 다.
  • 자주 사용 하 는 intentFilter
    위 에서 말 한 intent Filter 는 주로 다른 응용 프로그램 을 시작 하 는 데 사 용 됩 니 다.예 를 들 어 카메라,전화 등 은 무엇 을 자주 사용 합 니까?구체 적 으로 는 이 블 로 그 를 볼 수 있다.안 드 로 이 드 상용 URI 은 기억 할 만하 다.모 르 면 바 이 두 나 댓 글 에 남 겨 도 됩 니 다.
    작은 매듭
    intent Filter 는 시작 할 activity 를 선택 할 수 있 습 니 다.service 와 broadcast 도 마찬가지 로 intent Filter 를 설정 하여 해당 하 는 구성 요 소 를 암시 적 으로 시작 할 수 있 습 니 다.평소에 가장 많이 사용 하 는 것 은 암시 적 인 시작 활동,특히 다른 응용 활동 을 호출 할 때 이다.흔히 볼 수 있 는 호출 을 파악 하 는 것 도 중요 하 다.
    또한 intent Filter 의 일치 규칙 도 중요 합 니 다.기억 해 야 자신 이 intent Filter 를 설정 할 때 오류 가 발생 하지 않 습 니 다.
    그 중 에는 아직 많은 세부 사항 을 분명하게 말 하지 못 했 기 때문에 의문 이 있 는 독자 들 은 평론 구역 에서 메 시 지 를 남 길 수 있다.
    이상 은 안 드 로 이 드 인 텐트-filer 매 칭 규칙 해석 에 대한 상세 한 내용 입 니 다.안 드 로 이 드 인 텐트-filer 매 칭 규칙 에 대한 더 많은 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

    좋은 웹페이지 즐겨찾기