Hướng dẫn Android cho người mới bắt đầu Phần 4: Nhà cung cấp nội dung



Hướng dẫn Android này thảo luận về các khái niệm Nhà cung cấp nội dung. Nó là một khối xây dựng quan trọng của Android, tạo điều kiện cho việc trao đổi dữ liệu trong hệ thống Android.

Trong các hướng dẫn trước đây về Android dành cho người mới bắt đầu, chúng tôi đã thảo luận về ba khối xây dựng đầu tiên của Android: Hoạt động , Ý định Dịch vụ . Bài viết này là bài thứ tư trong loạt Hướng dẫn Android cho người mới bắt đầu và thảo luận về Trình cung cấp nội dung, là một thành phần rất quan trọng khác của Hệ thống Android.

Nhà cung cấp nội dung là người trung gian của hệ thống Android của bạn, tạo điều kiện trao đổi dữ liệu giữa các ứng dụng Android khác nhau. Hãy để chúng tôi tìm hiểu một chút chi tiết về điều đó trong hướng dẫn Android này.





Hướng dẫn Android cho người mới bắt đầu-Phần thưởng 4: Tải xuống mã nhà cung cấp nội dung tại đây . Bạn sẽ muốn có mã này khi bạn đã xem qua hướng dẫn! :)

[dl url = ”#” class = ”eModal eModal-6 ″ title =” Mã tải xuống ”desc =” ”type =” ”align =” ”cho =” tải xuống ”]



Hướng dẫn Android: Nhà cung cấp nội dung

Trình cung cấp nội dung tạo điều kiện truy cập vào kho hoặc kho dữ liệu trung tâm để cho phép chia sẻ dữ liệu và thao tác dữ liệu trên các ứng dụng khác nhau.

Dưới đây là một số ví dụ về Nhà cung cấp nội dung mặc định trong API của hệ thống Android:

Hướng dẫn Android: Nhà cung cấp nội dung mặc định trong hệ thống Android



Các nhà cung cấp nội dung này cho phép người dùng trừu tượng hóa từ một cơ sở dữ liệu bên dưới. Nói chung, Nhà cung cấp nội dung sử dụng SQLite để lưu trữ cơ sở dữ liệu bên dưới.

Hãy để chúng tôi lấy một ví dụ hữu ích về ứng dụng Facebook cũ tốt, ứng dụng đã giúp chúng tôi đơn giản hóa mọi thứ trong các Hướng dẫn Android trước đây!

Tất cả các bạn có một lúc nào đó trong cuộc sống mạng xã hội của mình, đã tải một bức ảnh lên dòng thời gian Facebook của mình, đúng không! Bạn làm nó như thế nào?

Khi nhấp vào Nút Ảnh trên tường, bạn sẽ đến được thư viện ảnh. Từ đó bạn có thể chọn ảnh để tải lên.

Đã đọc các bài viết trước của Loạt bài Hướng dẫn về Android , bạn biết về Hoạt động và Ý định, do đó, bạn biết rằng đây là những gì sẽ xảy ra:

Tường Facebook của bạn là một 'HOẠT ĐỘNG'. Khi bạn nhấp vào Nút Ảnh, “NỘI DUNG” được chuyển qua, chuyển tải thông điệp và “NHÀ CUNG CẤP NỘI DUNG” (Thư viện ảnh) sẽ mở ra. Ảnh được tải lên bằng cách tải lên mạng “SERVICE”.

Xem video trực tiếp này để biết cách Nhà cung cấp nội dung hoạt động bên trong Ứng dụng Facebook của bạn.

ghép nối trong java là gì

Tại sao Hệ thống Android cần Nhà cung cấp Nội dung?

Nhu cầu về Nhà cung cấp nội dung nảy sinh vì cơ sở dữ liệu được tạo trong một ứng dụng không hiển thị cho ứng dụng thứ hai.

Thật đơn giản để tạo và lưu trữ cơ sở dữ liệu trong các ứng dụng khác nhau bằng SQLite, tuy nhiên vấn đề là ở đây, cơ sở dữ liệu trong Android là riêng tư đối với ứng dụng tạo ra nó . Không có vùng lưu trữ chung nào trong Android mà mọi ứng dụng đều có thể truy cập. Do đó, để các ứng dụng khác nhau sử dụng cơ sở dữ liệu, hệ thống Android cần một giao diện cho phép trao đổi dữ liệu giữa các ứng dụng và giữa các quá trình. Đây là nơi mà nhà cung cấp nội dung đến để chơi.

Tôi có thực sự cần Nhà cung cấp nội dung không?

1) Bạn không cần phải phát triển nhà cung cấp của riêng bạn nếu bạn muốn một cơ sở dữ liệu riêng cho một ứng dụng cụ thể (cơ sở dữ liệu này sẽ không thể truy cập được đối với các ứng dụng khác với ứng dụng đã tạo ra nó).

2) Tuy nhiên, bạn cần một nhà cung cấp Tùy chỉnh để cung cấp các đề xuất tìm kiếm tùy chỉnh trong hệ thống ứng dụng của riêng bạn.

3) Bạn cũng sẽ cần một nhà cung cấp nội dung để sao chép và dán dữ liệu phức tạp từ ứng dụng của bạn sang các ứng dụng khác.

Các hoạt động được Nhà cung cấp nội dung hỗ trợ là gì?

Các nhà cung cấp nội dung hỗ trợ các hoạt động cơ bản sau:

một) Truy vấn: Truy vấn Nhà cung cấp nội dung cho tất cả các đối tượng, dựa trên URI được chỉ định.

2) Xóa bỏ: Xóa các đối tượng được chỉ định khỏi cơ sở dữ liệu của Nhà cung cấp nội dung.

3) Cập nhật: Cập nhật các đối tượng trong cơ sở dữ liệu.

4) Chèn: Chèn đối tượng mới vào cơ sở dữ liệu.

Các bước để thực hiện một hoạt động trong Trình cung cấp nội dung

Bước 1: Truy cập nhà cung cấp nội dung

Đối tượng khách hàng ContentResolver được sử dụng để truy cập dữ liệu từ Nhà cung cấp nội dung. Nó giao tiếp với đối tượng nhà cung cấp, từ đó chấp nhận yêu cầu truy cập dữ liệu và trả về kết quả mong muốn. Giao diện trao đổi dữ liệu được cung cấp bởi nhà cung cấp và đối tượng khách nhà cung cấp cho phép giao tiếp giữa các quy trình / ứng dụng khác nhau.

Ứng dụng cần truy cập cơ sở dữ liệu phải khai báo điều này và yêu cầu quyền trong tệp kê khai của nó. Điều này sẽ được thảo luận chi tiết trong các hướng dẫn Android tiếp theo của chúng tôi.

URI nội dung

URI nội dung là một trong những đối số được sử dụng để xác định dữ liệu trong trình cung cấp. Nó có bốn phần:

một) Kế hoạch: Lược đồ dành cho nhà cung cấp nội dung có một giá trị không đổi: 'nội dung'.

2) Thẩm quyền: Đây là tên tượng trưng của nhà cung cấp và là duy nhất cho mỗi nhà cung cấp. Đây là cách chúng tôi chọn ra nhà cung cấp nội dung mong muốn từ danh sách rất nhiều.

3) Con đường: Con đường giúp phân biệt dữ liệu cần thiết với cơ sở dữ liệu hoàn chỉnh . Ví dụ: Nhà cung cấp nội dung nhật ký cuộc gọi phân biệt các cuộc gọi nhỡ, cuộc gọi đã nhận, v.v. bằng các đường dẫn khác nhau.

4) TÔI: Nó không phải là một thành phần bắt buộc và có thể không có trong URI nhưng nếu có, nó phải ở dạng số. Ví dụ, nếu bạn muốn truy cập một tệp nhạc cụ thể từ Nhà cung cấp nội dung phương tiện của mình, bạn cũng sẽ chỉ định một ID .

Quá trình

Sử dụng quyền của nhà cung cấp, ContentResolver xác định đúng nhà cung cấp nội dung (vì quyền là duy nhất cho mỗi nhà cung cấp nội dung). Sau khi thực hiện điều đó, thành phần đường dẫn của URI được sử dụng để chọn bảng dữ liệu chính xác (được yêu cầu). Trong trường hợp có ID, nhà cung cấp sẽ biết dữ liệu chính xác nào đang được yêu cầu.

URI có hai loại:

Ngoài ra, URI cũng có thể có thông tin hạn chế.

Bước 2: Cách truy xuất dữ liệu từ Nhà cung cấp nội dung

Mặc dù ContentResolver hiện có quyền truy cập vào bảng dữ liệu, nó không thể truy xuất dữ liệu được yêu cầu trừ khi ứng dụng có “Quyền truy cập đọc” cho nhà cung cấp cụ thể đó. Quyền này được xác định trong tệp kê khai của mỗi nhà cung cấp nội dung.

Tất cả những gì là một ứng dụng (muốn truy cập cơ sở dữ liệu này) phải làm là yêu cầu sự cho phép này.

Bây giờ như đã thảo luận trước đó trong hướng dẫn Android này, bốn hoạt động có thể được thực hiện bằng cách sử dụng một nhà cung cấp nội dung . Chúng ta sẽ điểm qua từng cái một.

QUERYING

Bây giờ, bạn đã truy cập vào nhà cung cấp và có quyền truy xuất dữ liệu từ nó. Bước tiếp theo là xây dựng truy vấn để yêu cầu hành động bắt buộc từ nhà cung cấp .

Dưới đây là các đối số được sử dụng khi truy vấn:

một) GHÉT : Nó hoạt động chính xác như đã giải thích ở trên.

2) Phép chiếu: Truy vấn nên trả về một tập hợp các cột từ toàn bộ bảng cơ sở dữ liệu . Đây được gọi là phép chiếu. Vượt qua null sẽ trả về tất cả các cột, không hiệu quả.

3) Mệnh đề lựa chọn: ĐẾN bộ lọc khai báo hàng nào sẽ trả về , được định dạng như một mệnh đề WHERE trong SQL (ngoại trừ chính WHERE). Vượt qua null sẽ trả về tất cả các hàng cho URI đã cho.

Ví dụ: nếu bạn nhập một bảng chữ cái (giả sử là ‘P’) vào cột tìm kiếm trong sổ địa chỉ của mình, thì nó sẽ trả về tất cả các chi tiết liên hệ bắt đầu bằng ‘P’. Tuy nhiên, nếu bạn không nhập bất kỳ thứ gì vào thanh tìm kiếm, danh sách liên hệ đầy đủ sẽ được truy xuất (mệnh đề lựa chọn được đặt thành ‘null’ trong những trường hợp như vậy).

4) Đối số lựa chọn: Bạn có thể bao gồm “? S” trong lựa chọn, giá trị này sẽ được thay thế bằng các giá trị từ selectArgs, theo thứ tự xuất hiện trong lựa chọn.

5) Thứ tự sắp xếp: Mệnh đề ORDER BY trong SQL (không bao gồm ORDER BY chính nó). Việc vượt qua null sẽ lấy các kết quả có thể không có thứ tự.

VÍ DỤ VỀ MÃ cho Truy vấn:

  • Tìm kiếm số điện thoại trong Danh bạ
Con trỏ con trỏ = contentresolver.query (ContactsContract.Contacts.CONTENT_URI, null, null, null, null) int count = cursor.getCount () if (count> 0) {String contactDetails = '' while (cursor.moveToNext ()) { String columnId = ContactsContract.Contacts._ID int cursorIndex = cursor.getColumnIndex (columnId) String id = cursor.getString (cursorIndex) String name = cursor.getString (con trỏ .getColumnIndex (ContactsContract.Contacts.DISPLAY_NAME)) int numCount = Integer (cursor.getString (con trỏ .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER))) if (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKinds.Phone + '=? , new String [] {id}, null) while (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Phone.NUMBER)) contactDetails + = 'Name:' + name + ', Phone No:' + phoneNo + ''} phoneCursor.close ()}}}

CHÈN

Giả sử bạn muốn chèn các liên hệ mới vào sổ địa chỉ của mình. Đối tượng ContentValues được sử dụng để thực hiện các chèn này. Các khóa đối tượng ContentValue và cột Nhà cung cấp nội dung phải khớp để đạt được điều này. Đây là một ví dụ cho điều này:

VÍ DỤ VỀ MÃ ĐỂ chèn:

  • Thao tác là chèn mục nhập mới với tên “Rajnikant” và số “9988999888”
// Hoạt động ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_COUNT_NAME, null) .withValue (Rawbuild, null). ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE, build “Rajwi ”_TYPE). ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withUM9PE, “Điện thoại. , Phone.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

CẬP NHẬT

Để cập nhật trình cung cấp nội dung, các đối số sau được sử dụng:

một) GHÉT: URI của nhà cung cấp nội dung

lớp ẩn danh trong java]

2) Giá trị nội dung: Điều này chứa các giá trị sẽ thay thế dữ liệu hiện có.

3) Mệnh đề lựa chọn: Điều này có thể giúp chọn các bản ghi cụ thể để cập nhật

4) Đối số lựa chọn: Bạn có thể bao gồm “? S” trong lựa chọn, giá trị này sẽ được thay thế bằng các giá trị từ selectArgs, theo thứ tự xuất hiện trong lựa chọn.

Một lần nữa, các khóa của đối tượng ContentValues ​​phải khớp với các cột trong Trình cung cấp nội dung nếu không, cập nhật sẽ không xảy ra.

VÍ DỤ VỀ MÃ ĐỂ Cập nhật:

  • Đang cập nhật số điện thoại có tên là “Rajnikant”
String where = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newUpdate (ContactsContract.Data.CONTENT_URI) .withSelection (where, params) .withValue (ContactsContract.CommonDataKinds. Phone.NUMBER, “9876543210”) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

XÓA

Việc xóa sử dụng các đối số tương tự như cập nhật ngoại trừ đối số ContentValues, không bắt buộc vì sẽ không có bất kỳ giá trị thay thế nào.

VÍ DỤ VỀ MÃ ĐỂ Xóa:

  • Xóa Liên hệ có tên là “Rajnikant”
String where = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newDelete (ContactsContract.RawContacts.CONTENT_URI) .withSelection (where, params) .build ()) getContentResolver ( ) .applyBatch (Danh bạContract.AUTHORITY, ops)

Trong trường hợp hoạt động Chèn, URI phải dựa trên thư mục. Trong tất cả các trường hợp khác, URI có thể dựa trên ID hoặc dựa trên thư mục.

Chung ta hy vọng Hướng dẫn Android cho người mới bắt đầu: Phần 5 không quá khó hiểu! Chúng ta sẽ thảo luận thêm về Nhà cung cấp nội dung trong Hướng dẫn tiếp theo về Android. Hãy học những điều cơ bản cho đến lúc đó!

Bạn có nghi ngờ gì trong hướng dẫn Android này không? Hỏi chúng tôi.

Chúc bạn học vui vẻ!

Các tài nguyên sau đã được sử dụng để tạo Hướng dẫn Android này! Nhà phát triển Android chính thức , Edureka.in

Bạn cũng có thể thích những bài viết liên quan này: