web-dev-qa-db-ja.com

uri、contentValuesとは

カレンダーのイベントを操作する際に使用した各用語について、誰でも説明できますか?

  1. Uri event_uri = Uri.parse("content://com.Android.calendar/" + "events");
    int値を0に初期化できるため、ここでuriとは何ですか、実際はコンテンツとは何ですか?それは...ですか
    デフォルト値でuriを初期化できますか?

  2. Uri reminder_uri = Uri.parse("content://com.Android.calendar/" + "reminders");
    これらのuriの意味は何ですか? _event_uri_と_reminder_uri_の違いは何ですか?

  3. _ContentValues values = new ContentValues();
    values.put("calendar_id", 1);
    values.put("title", str);
    values.put("description", m_strDescription);
    _
    最初のものは何をしますか? values.put("calendar_id", 1);

  4. ContentResolver cr = getContentResolver();
    コンテンツリゾルバーの用途は何ですか?時々私たちは書きます:

    Uri u = cr.insert(event_uri, values)
    このURIは何ですか?最初の2つのURI、たとえば_event_uri_と_reminder_uri_との違いは何ですか

    再びvalues.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

    それは何をするためのものか?

30
AndroidDev

質問1と2に関して、A Uriは重要なものを指すアドレスです。 ContentProvidersの場合、Uriは通常、使用するテーブルを決定するために使用されます。したがって、_event_uri_はイベントテーブルを指し、_reminder_uri_はリマインダーテーブルを指します。 urisには「デフォルト値」はありません。

質問3に関して、ContentValuesは基本的にキーと値のペアのセットであり、キーはテーブルの列を表し、値はその列に挿入される値です。したがって、values.put("calendar_id", 1);の場合、列は「calendar_id」であり、その列に挿入される値は1です。

質問4に関して、ContentResolverは、AndroidがUrisをContentProvidersに解決するために使用するものです。誰でもContentProviderを作成できますおよびAndroidには、カレンダー、連絡先などのContentProvidersがあります。ContentResolverinsert()メソッドは、Uri挿入された行:したがって、質問1と2では、Urisはテーブルを指していましたが、Urisは階層的であるため、特定の行に解決できます。

_content://com.Android.calendar/events_はイベントテーブルを指しますが、

_content://com.Android.calendar/events/1_は、ID 1のイベントテーブルの行を指します。

これは通常の動作ですが、ContentProviderを提供することでURIをカスタマイズして異なる方法で解決できることに注意してください。

ContentProvider docs 、特に Content URI のセクションを読むことを強くお勧めします。


以前に推奨されたドキュメントから:

前のコード行では、「words」テーブルの完全なURIは次のとおりです。

_content://user_dictionary/words_

ここで、_user_dictionary_文字列はプロバイダーの権限であり、words文字列はテーブルのパスです。文字列_content://_(scheme)は常に存在し、これをコンテンツURIとして識別します。

54
Noel

ContentValues:

public final class
ContentValues
extends Object
implements Parcelable have public methods
like: String getAsString(String KEY) , void put(Sring KEY, String value)
e.g.

public void createEntry(String name, String number){
    ContentValues cval = new ContentValues();
    cval.put(KEY_NAME, name);   // KEY_NAME is key just like parameter in put(String key)
    ....
    ....
    ....


}
0
Faakhir