“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.