2016-06-01 11 views
0

次の形式のURIを使用してコンテンツプロバイダにアクセスしたいと思います。コンテンツプロバイダへのアクセス

sUriMatcher.addURI("org.abcd.providers.contentprovider", "bookmarks", 1) 

だから、私はそれは、 "://org.abcd.providers.contentprovider/bookmarksコンテンツ" URIを使用してアクセスすることができますか?値 "1"はどういう意味ですか?このタイプのプロバイダにクエリを行うにはどうすればよいですか?ありがとうございます。

答えて

1

"1"はContentProviderで内部的に使用されます。 URIを数字に関連付けるために使用されます。 switch文で使用すると便利です。

なぜ文字列マッチングを使用しないのですか?まあ、URIには可変部分があるかもしれません。たとえば、「content://my.provider/bank/customer/2」と入力します。 2は顧客のIDです。または「content://my.provider/location/42/name」。ここで可変部分は42です。ここでは文字列のマッチングは制御できません。一方、UriMatcherは、例1をaddURI( "my.provider"、 "bank/customer /#"、1)、例2をaddURI( "my.provider"、 "location /#/ name" 、2)。設定されたUriMatcherにURIを照合するよう要求すると、一致するURIに関連付けられた番号が返されます。

しかし、私たちはここから外れています。番号は消費者としてのあなたとは関係ありません。コンテキストメソッド 'getContentResilver().query(content://org.abcd.providers.contentprovider/bookmarks、/ * other args * /)'を使用してプロバイダを照会できます。詳細については、the documentationを参照してください。

ただし、エクスポートされた(何もできない)場合、またはアプリケーションに付与されている権限が必要な場合にのみ、プロバイダーと話すことができます。これにはパーミッションはまったく含まれません。

+0

ありがとうございました! – lifeisgooddd

関連する問題