現在、私はAndroid OS用のダイヤラーアプリを開発しています。Android - 連絡先とテーブルの結合は不可能ですか?
これは、ListViewの連絡先、連絡先を表示します。 SearchViewは、姓、名前、ニックネーム、およびすべての番号で連絡先を検索するために使用されます。検索文字列が4つのキー種類の部分文字列を表す場合、リストは一致するエントリに縮小されます。
私はリストを埋めるためにCursorAdapterとCursorLoaderを使用しています。 これは、パフォーマンスのために非常に重要です。 その時点まで、すべてが機能しており、絶対的にクリアです。今
問題: 私は1つのSQLクエリで、デフォルトの連絡先デシベル(contacts2.db)2から3のテーブル、 に参加する必要があります。 それで、私のアプリはそれ自身のプライベートdbを使うべきではありません。 しかし、既存のContentProviderは複数のテーブルへのアクセスを提供していません。 - >問題が発生しました。
私自身のContentProviderを実装すると、SQLiteQueryBuilderを使用してジョインを行うことができます。 しかし、それは私的なデータベースのためだけに働くように見えます。 私は直接に位置contacts2.db、アクセスしようとすると:
/data/data/com.android.providers.contacts/databases/contacts2.db
を私はエラーを次取得:
すべてのアプリが適切なを使用して、それ自身のストレージを持っているので、何とか、期待されているFailed to open database '/data/data/com.android.providers.contacts/databases/contacts2.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (Sqlite code 14): Could not open database, (OS error - 13:Permission denied)
根底にあるLinuxファイルシステムの中にあります。
このデータベースにどのようにして読み取りアクセス権を取得できますか? DBオブジェクトをアンドロイドシステムに何らかの形で要求したり、Contextオブジェクトを利用したりできますか?あるいは、私はそれらのアクセス権を何とか得ることができますか?
連絡先アプリと同じAUTHOTITY_NAMEを使用できますか?このように:
com.android.providers.contacts
- 私はJavaコードを使用して列の参加に興味がない、それは非常に遅く、UGLYだ、と私はとにかく
- 私がいないリストまたは類似のものの代わりにカーソルを必要としますで、すべてのことが可能である - SQLに すべてのあなたのAndroid-賛否そこ
大変ありがとうございます。