“android.intent.category.DEFAULT”의 목적은 무엇입니까?


104

android.intent.category.DEFAULT의도 필터의 범주 필드에서 사용하는 목적은 무엇입니까 ?


2
이것이 애플리케이션의 기본 진입 점이라고 말하는 것입니다. 참조 : developer.android.com/reference/android/content/…
— Blundell 2011

@Blundell : 암시 적 인 텐트가 도착하면 인 텐트 필터의 카테고리가 기본값 인 활동이 호출됩니까?
— Pravy

1
나는 이것이 yes "패키지에 지정된 인 텐트 필터에 사용하기위한 것"을 사용하는 활동임을 암시하는 데 사용된다고 생각합니다
— Blundell 2011

둘 이상의 활동이 카테고리로 default를 포함하는 경우 해당 인 텐트 필터에서 어떤 활동이 호출됩니까?
— Pravy 2011

인 텐트 필터가 다른 경우 인 텐트에 따라 다릅니다.
— Blundell 2011

답변:


112

범주는 암시 적 인 텐트에 사용됩니다. 따라서 활동에 다른 특정 범주가 할당되지 않은 경우 암시 적 의도로 활동을 시작할 수있는 경우 활동의 의도 필터에이 범주가 포함되어야합니다. (인 텐트 필터에 다른 카테고리가있는 경우에도). 활동 이 다른 카테고리로 호출 되어야 한다고 확신하는 경우 기본값을 사용하지 마십시오.

카테고리를 기본값으로 설정한다고해서 앱이 시작될 때이 활동이 기본적으로 사용된다는 의미는 아닙니다. 활동은 "해당 시스템을 말한다 스타터 의도의 범주로 설정되어있는 경우에도 오 내가 시작 할 수 아무것도 전혀! "


27
이것은 실제로 이해할 수있는 설명이었습니다. 다음 답변을 문서와 비교하십시오. "활동이 데이터에 대해 수행 할 기본 작업 (가운데 누르기)에 대한 옵션이어야하는지 설정합니다.이 설정을 설정하면 일부 작업을 수행 할 때 설정되지 않은 모든 활동이 사용자에게 표시되지 않습니다. 데이터는 "어떻게 하드가 ... 이해 가능한 설명을 작성할 수 있습니다
— 안드레아스

인 텐트 필터가없는 활동은 여전히 ​​묵시적 활동으로 호출 될 수 있기 때문에 선택 사항 인 것처럼 보이지만 그 의무에 대해서는 잘 모르겠습니다
— humblerookie

6
문서가 더 명확 해졌습니다. IMO : Android는 startActivity () 및 startActivityForResult ()에 전달 된 모든 암시 적 인 텐트에 자동으로 CATEGORY_DEFAULT 카테고리를 적용합니다. 따라서 활동이 암시 적 인 텐트를 수신하도록하려면 인 텐트 필터에 'android.intent.category.DEFAULT'카테고리를 포함해야합니다.
— shkschneider

2
@humblerookie. 나는 그것을 시도했지만 DEFAULT 범주 없이는 작동하지 않습니다. 당신이 믿지 않는다면 스스로 시험해보십시오.
— Bob Ueland

2
모든 튜토리얼이 이런 식으로 작성 되었다면. 2018 년에도 여전히 목조 언어를 사용하는 이유는 무엇입니까?
— SudoPlz

24

이 카테고리는 주로 암시 적 의도에 사용됩니다. 암시 적 인 텐트로 활동을 시작하려는 경우 필터에이 카테고리를 포함해야합니다.

"기본"이라는 용어는 "기본 후보 " 로 이해되어야한다고 생각합니다 . 데이터에 대한 작업이 여러 활동으로 해결되면 Android는 모든 후보를 사용자에게 제공하고 사용자는 선호하는 기본값을 선택할 수 있습니다.

참고:

http://developer.android.com/guide/components/intents-filters.html

해당 페이지에서 추출 :

Android는 startActivity ()에 전달 된 모든 암시 적 인 텐트가 하나 이상의 카테고리 인 "android.intent.category.DEFAULT"(CATEGORY_DEFAULT 상수)를 포함하는 것처럼 처리합니다. 따라서 암시 적 인 텐트를 수신하려는 활동은 인 텐트 필터에 'android.intent.category.DEFAULT'를 포함해야합니다. ( 'android.intent.action.MAIN'및 'android.intent.category.LAUNCHER'설정이있는 필터는 예외입니다. 새 작업을 시작하고 런처 화면에 표시되는 활동을 표시합니다. 여기에는 'android.intent .category.DEFAULT '가 카테고리 목록에 있지만 반드시 그럴 필요는 없습니다.)


@Comptrol, 귀하의 답변은 더 이상 아래에 없습니다. 상승하고 있습니다. :-)
— Ellen Spertus 2014 년

예,하지만 원래 상태로 되돌 렸습니다. 그래서 저는 전반적으로 아무것도 바꾸지 않았습니다.
— Özgür

1
이 답변이 현재 상황 이해 인 텐트 필터에 더 유용하다고 생각합니다. 감사합니다.
— Neon Warge

1

실제로 앱이 실행 중일 때 다른 활동을 호출 할 수 있는지 확인하는 것입니다. LAUNCHER는 시작하는 첫 번째 활동이있는 활동을 만듭니다. 인 텐트를 사용하여 다른 활동으로 이동하려면 DEFAULT를 입력하여 "실제"활동으로 나열해야합니다. 그것은 내가 아는 것이므로 잘못된 경우 인용하지 마십시오.


3
주장에 대한 참조를 제공하기 위해 노력해야합니다. "틀린 경우 인용하지 마십시오"는이 규칙을 무시하도록 허용하지 않습니다.
— verybadalloc 2013-08-02

제가 가지고있는 참고 자료는 Android 코딩을 공부하면서 작업 한 프로젝트입니다. 소스 파일을 원하시면 기꺼이 보내 드리겠습니다.
— CHT 2013 년

1

활동은 Context.startActivity ()에서 찾을 수 있도록 CATEGORY_DEFAULT를 지원해야합니다.

암시 적 인 텐트를 수신하려면 인 텐트 필터에 CATEGORY_DEFAULT 카테고리를 포함해야합니다. startActivity () 및 startActivityForResult () 메소드는 모든 인 텐트를 CATEGORY_DEFAULT 카테고리를 선언 한 것처럼 처리합니다. 인 텐트 필터에서 선언하지 않으면 암시 적 인 텐트가 활동으로 확인되지 않습니다.


0

일부 작업을 기본 작업으로 선언하는 데 사용됩니다 (이름에서 알 수 있듯이). 메모장 앱 (Android 메모장 샘플 참조)이 있다고 가정 해 보겠습니다. 앱의 첫 페이지는 모든 메모장 파일 목록으로 구성됩니다. 하나의 메모장 파일을 선택하면 메모 편집, 메모 삭제 등의 작업 중 하나를 수행 할 수 있습니다. 하지만 편집을 기본 동작으로하고 싶습니다. 즉, 키패드의 가운데 버튼을 누르면 편집 창이 열려야합니다.


1
: 당신은 안드로이드 메모장의 예를 보면, 모든 활동은 기본적으로 표시됩니다 developer.android.com/reference/android/content/Intent.html
— 피터 Ajtai

0

https://developer.android.com/guide/components/intents-filters

암시 적 인 텐트를 수신하려면 인 텐트 필터에 CATEGORY_DEFAULT 카테고리를 포함해야합니다. startActivity () 및 startActivityForResult () 메소드는 모든 인 텐트를 CATEGORY_DEFAULT 카테고리를 선언 한 것처럼 처리합니다. 인 텐트 필터에서이 카테고리를 선언하지 않으면 암시 적 인 텐트가 활동으로 해석되지 않습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.