
親愛なるハブロフチアン!
ご存知のように、Androidは潜在的に進化し、競争力のあるオペレーティングシステムです。 より多くの開発者が毎日このシステムの下に置かれています。 私は初心者のAndroid開発者ですが、そのためのEclipseとADTのインストール方法については説明しません。
このトピックでは、Androidオペレーティングシステムのコンテンツプロバイダーについて説明し、そのうちの1つと連携する小さな例を紹介します。
コンテンツプロバイダーとは
コンテンツプロバイダーは、サービス内のデータを集約するように設計されたエンティティです。 コンテンツプロバイダーを使用することで、データソースはプレゼンテーションステートフル転送(REST)プロバイダーに似ています

RESTとは
REST(Representational State Transfer)は、Webサービスの構築に一般的に使用されるWorld Wide Webなどの分散システム用のソフトウェアアーキテクチャのスタイルです。 RESTという用語は、HTTPプロトコルの作成者の1人であるRoy Fieldingによって2000年に導入されました。 RESTをサポートするシステムは、RESTfulシステムと呼ばれます。
一般に、RESTは、追加の内部層を使用しない非常にシンプルな情報管理インターフェイスです。 各情報は、URLなどのグローバル識別子によって一意に識別されます。 各URLには、厳密に定義された形式があります。
そして今、同じことはより明白です:
追加の内部層が存在しないということは、データ自体と同じ形式でのデータ転送を意味します。 つまり SOAPやXML-RPCのようにデータをXMLでラップしません。FlashのようにAMFを使用しません。 データそのものを与えるだけです。
情報の各ユニットはURLによって一意に決定されます。つまり、URLは基本的にデータユニットのプライマリキーです。 つまり たとえば、本棚の3番目の本は/ book / 3のようになり、この本の35ページ目は/ book / 3 / page / 35のようになります。 ここから、厳密に指定された形式を取得します。 また、データがアドレス/ book / 3 / page / 35にある形式はまったく関係ありません。HTML、jpegファイル形式のスキャンされたコピー、またはMicrosoft Word文書のいずれかです。
サービス情報の管理方法-これは完全にデータ転送プロトコルに基づいています。 最も一般的なプロトコルは、もちろんHTTPです。 したがって、HTTPの場合、データに対するアクションは、GET(取得)、PUT(追加、置換)、POST(追加、変更、削除)、DELETE(削除)のメソッドを使用して設定されます。 したがって、CRUD(作成-読み取り-更新-削除)アクションは、4つのメソッドすべてで実行でき、GETおよびPOSTでのみ実行できます。
以下は例でどのように見えるかです:
GET / book /-すべての本のリストを取得
GET / book / 3 /-ブック番号3を取得
PUT / book /-ブックを追加します(リクエスト本文のデータ)
POST / book / 3-書籍の変更(リクエスト本文のデータ)
DELETE / book / 3-ブックを削除します
Androidの標準コンテンツプロバイダーの種類
-ブラウザ -CallLog -連絡先 -人々 -電話 -写真 -グループ -MediaStore -オーディオ -アルバム -アーティスト -ジャンル -プレイリスト -画像 -サムネイル -ビデオ -設定
階層の上位レベルでは、SQLiteデータベースは下位テーブルにあります。 したがって、ブラウザ、CallLog、連絡先、MediaStore、設定は、プロバイダーの形式でカプセル化された個別のSQLiteデータベースです。
コンテンツプロバイダーのアーキテクチャ
各コンテンツプロバイダーは、特別な行を使用してWebサイトとしてデバイスに登録されます(ドメイン名のように見え、権限と呼ばれます)。 デバイス内のこの一意の文字セットシーケンスは、URIのセットの基礎です。
ソースの登録は、AndroidManifest.xmlファイルで実行されます。 以下は、Androidでコンテンツプロバイダーを登録する方法の2つの例です。
<provider android:name = "SomeProvider" android:authorities = "com.YourApplication.SomeProvider" />
<provider android:name = "NotePadProvider" android:authorities = "com.google.provider.NotePad" />
コンテンツプロバイダーは、コンテンツを取得するための同様のRESTリンクにも遭遇します。
content://com.google.provider.NotePad/notes/-すべての投稿を取得
content://com.google.provider.NotePad/notes/#-IDで1つのレコードを取得
以下は、コンテンツプロバイダーのURIです。
コンテンツ://メディア/内部/画像/
コンテンツ://メディア/外部/画像/
コンテンツ://連絡先/人/
コンテンツ://連絡先/人/ 23
ここで、プロバイダー(content:// media /)および(content://連絡先)の構造は不完全です。つまり、これらのコンテンツプロバイダーはサードパーティではなく、Androidシステムによって制御されます。
特定のURIをより詳細に検討します。
コンテンツ://com.google.provider.NotePad/notes/23
コンテンツの後:URIには、対応するレジストリでコンテンツプロバイダーを見つけるために使用される統一されたソース識別子が含まれます。
このURIでは、com.google.provider.NotePad部分がソースです。
/ notes / 23は、個々のコンテンツプロバイダーに固有のパスセクションです
URIを使用して連絡先データを読み取る
Androidのセキュリティシステムを覚えておくことが重要なので、AndroidManifest.xmlファイルに追加します。
<uses-permission android:name="android.permission.READ_CONTACTS" />
アクセス権の詳細についてはこちらをご覧ください
次のURIを考慮してください
People.CONTENT_URI
同等のテキスト文字列URIは次のようになります。
コンテンツ://連絡先/人/
このようなURIを使用する場合、文字列を取得するためのコードは次のようになります。
/* */ Cursor managedCursor = managedQuery(People.CONTENT_URI, new String[] { People._ID, People.NAME, People.NUMBER }, // null, // () null, // People.NAME + " ASC"); // // : startManagingCursor(managedCursor); // , if (managedCursor.getCount() > 0) { while (managedCursor.moveToNext()) { // Log.i("DATA", managedCursor.getString(0) + " :: " // _ID + managedCursor.getString(1) + " " // NAME + managedCursor.getString(2)); // NUMBER } }
カーソルの詳細はこちら 。