Mục đích của “android.intent.category.DEFAULT” là gì?


103

Mục đích của việc sử dụng android.intent.category.DEFAULTtrong trường Danh mục của Bộ lọc Ý định là gì?


2
Câu nói của bạn, đây là điểm nhập mặc định cho ứng dụng của bạn. Xem: developer.android.com/reference/android/content/…
Blundell vào

@Blundell: vậy nếu một ý định ngầm đến, một hoạt động có mặc định là danh mục của nó trong bộ lọc ý định sẽ được gọi?
Pravy

1
Tôi tin rằng nó được sử dụng để ngụ ý đây là hoạt động để sử dụng có "nó được sử dụng trong các bộ lọc ý định được chỉ định trong các gói"
Blundell

nếu nhiều hoạt động chứa mặc định là danh mục của chúng, trong bộ lọc ý định tương ứng của chúng, hoạt động nào sẽ được gọi là?
Pravy

Nếu họ có các bộ lọc mục đích khác nhau, nó sẽ phụ thuộc vào mục đích.
Blundell

Câu trả lời:


112

Các danh mục được sử dụng cho Ý định ngầm. Vì vậy, nếu Hoạt động của bạn có thể được bắt đầu bằng Ý định ngầm khi không có danh mục cụ thể nào khác được chỉ định cho hoạt động, thì bộ lọc Ý định của hoạt động phải bao gồm danh mục này. (ngay cả khi bạn có các danh mục khác trong bộ lọc Ý định). Nếu bạn chắc chắn rằng hoạt động của mình phải được gọi với bất kỳ Danh mục nào khác, đừng sử dụng Mặc định.

Đặt Danh mục thành Mặc định không có nghĩa là Hoạt động này sẽ được sử dụng theo mặc định khi ứng dụng của bạn khởi chạy. Hoạt động chỉ nói với hệ thống rằng " Ồ, tôi có thể bắt đầu, ngay cả khi danh mục của Ý định khởi đầu được đặt thành Không có gì cả! "


27
Đây thực sự là một lời giải thích dễ hiểu. So sánh câu trả lời này với tài liệu: "Đặt nếu hoạt động phải là một tùy chọn cho hành động mặc định (nhấn giữa) để thực hiện trên một phần dữ liệu. Việc đặt này sẽ ẩn với người dùng bất kỳ hoạt động nào mà không được đặt khi thực hiện một hành động trên một số dữ liệu" Làm thế nào cứng nó có thể được viết mô tả dễ hiểu ...
Andreas

Tôi không chắc chắn về nhiệm vụ của mình mặc dù là nó có vẻ là tùy chọn vì một hoạt động mà không cần bất kỳ bộ lọc ý định vẫn có thể được gọi là một hoạt động ngầm
humblerookie

6
Tài liệu hiện đã rõ ràng hơn IMO: Android tự động áp dụng danh mục CATEGORY_DEFAULT cho tất cả các ý định ngầm được chuyển đến startActivity () và startActivityForResult (). Vì vậy, nếu bạn muốn hoạt động của mình nhận được ý định ngầm, nó phải bao gồm một danh mục cho "android.intent.category.DEFAULT" trong bộ lọc ý định của nó.
shkschneider

2
@humblerookie. Tôi đã thử nó và nó không hoạt động nếu không có danh mục DEFAULT. Nếu bạn không tin tôi tự kiểm chứng.
Bob Ueland

2
Giá như tất cả các hướng dẫn được viết theo cách này. Tại sao chúng ta vẫn sử dụng ngôn ngữ gỗ trong năm 2018?
SudoPlz

24

Loại này chủ yếu được sử dụng cho các ý định ngầm. Nếu hoạt động của bạn muốn được bắt đầu bởi một ý định ngầm, nó nên bao gồm catetory này trong bộ lọc của nó.

Tôi nghĩ thuật ngữ "default" nên được hiểu là " ứng cử viên mặc định ". Nếu hành động trên một phần dữ liệu giải quyết thành nhiều hoạt động, thì Android sẽ hiển thị tất cả các ứng cử viên cho người dùng và người dùng có thể chọn mặc định ưa thích của mình.

Tài liệu tham khảo:

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

Trích xuất từ ​​trang đó:

Android xử lý tất cả các ý định ngầm được truyền vào tostartActivity () như thể chúng chứa ít nhất một danh mục: "android.intent.category.DEFAULT" (hằng số CATEGORY_DEFAULT). Do đó, các hoạt động sẵn sàng nhận ý định ngầm phải bao gồm "android.intent.category.DEFAULT" trong bộ lọc ý định của chúng. (Bộ lọc có cài đặt "android.intent.action.MAIN" và "android.intent.category.LAUNCHER" là ngoại lệ. Chúng đánh dấu các hoạt động bắt đầu nhiệm vụ mới và được hiển thị trên màn hình trình khởi chạy. Chúng có thể bao gồm "android.intent .category.DEFAULT "trong danh sách các danh mục, nhưng không cần.)


@Comptrol, câu trả lời của bạn không còn ở bên dưới. Nó đang tăng. :-)
Ellen Spertus

Có, nhưng tôi đã đưa nó trở lại trạng thái ban đầu. Vì vậy, tôi không thay đổi aypnything gì cả.
Özgür

1
Tôi thấy câu trả lời này hữu ích hơn đối với các bộ lọc ý định hiểu tình huống hiện tại của tôi. cảm ơn bạn.
Neon Warge

1

Nó thực sự là để đảm bảo các hoạt động khác của bạn có thể được gọi ra khi ứng dụng đang chạy. LAUNCHER sẽ đặt hoạt động có nó trở thành hoạt động đầu tiên bắt đầu. Để sử dụng ý định để thực hiện các hoạt động khác, chúng phải được liệt kê là hoạt động "thực tế" bằng cách đặt DEFAULT. Đó là từ những gì tôi biết vì vậy đừng trích dẫn tôi nếu nó sai.


3
Bạn nên cố gắng cung cấp tài liệu tham khảo cho các yêu cầu của mình. "đừng trích dẫn tôi nếu nó sai" không cho phép bạn ghi đè quy tắc này.
verybadalloc

Tài liệu tham khảo mà tôi có là một dự án tôi đã làm trong khi tôi nghiên cứu về mã hóa Android. Nếu bạn muốn các tệp nguồn, tôi sẽ sẵn lòng gửi chúng.
CHT

1

Các hoạt động sẽ cần hỗ trợ CATEGORY_DEFAULT để Context.startActivity () có thể tìm thấy chúng.

Để nhận được ý định ngầm, bạn phải bao gồm danh mục CATEGORY_DEFAULT trong bộ lọc ý định. Các phương thức startActivity () và startActivityForResult () coi tất cả các ý định như thể chúng đã khai báo danh mục CATEGORY_DEFAULT. Nếu chúng tôi không khai báo nó trong bộ lọc ý định của mình, sẽ không có ý định ngầm nào giải quyết hoạt động của chúng tôi.


0

Nó được sử dụng để khai báo một số hoạt động là hành động mặc định (như tên gọi của nó gợi ý). Hãy xem xét chúng tôi có một ứng dụng notepad (đề cập đến mẫu notepad android). Trang đầu tiên của ứng dụng bao gồm danh sách tất cả các tệp notepad. Khi một tệp notepad được chọn, một trong các thao tác như chỉnh sửa ghi chú, xóa ghi chú, v.v. có thể được thực hiện. Nhưng tôi muốn thực hiện chỉnh sửa làm hành động mặc định của mình, nghĩa là khi tôi nhấn nút chính giữa của bàn phím, cửa sổ chỉnh sửa sẽ mở ra.


1
Nếu bạn xem ví dụ về Android Notepad, tất cả các Hoạt động được đánh dấu là mặc định: developer.android.com/reference/android/content/Intent.html
Peter Ajtai

0

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

Để nhận được ý định ngầm, bạn phải bao gồm danh mục CATEGORY_DEFAULT trong bộ lọc ý định. Các phương thức startActivity () và startActivityForResult () coi tất cả các ý định như thể chúng đã khai báo danh mục CATEGORY_DEFAULT. Nếu bạn không khai báo danh mục này trong bộ lọc ý định của mình, sẽ không có ý định ngầm nào giải quyết hoạt động của bạn.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.