問題タブ [android-contentresolver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
443 参照

android - Android: ContentResolver クエリから Facebook の連絡先を除外する方法

このクエリを使用して、電話のすべての連絡先を取得しています。

ユーザーが Facebook の連絡先を同期している場合は、このクエリでそれらを他のすべてのものと共に取得します。ただし、非同期 API 呼び出しを介して既にユーザーの Facebook の連絡先を取得しているため、重複を避けるためにこのクエリから Facebook の連絡先を除外したいと考えています。

このクエリによって返されるものから Facebook の連絡先を除外できるようにするために、含める必要がある WHERE 句 (選択パラメーター) を教えてもらえますか?

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

編集:または、少なくとも、Facebook の連絡先を手動でフィルタリングできる ContentResolver から選択できるフィールドだけですか? それはちょうど良いでしょう。

0 投票する
1 に答える
1904 参照

android - Android:データベースINSERTが例外「getWritableDatabaseを再帰的に呼び出しました」をトリガーします

非同期タスクがSQLiteデータベースにデータを挿入しようとするたびに、次の例外が発生します。

java.lang.IllegalStateException:getWritableDatabaseが再帰的に呼び出されました

データは、ダウンロード、変換、そして最後にデータを挿入するための個別の非同期タスクを実行するサービスによって生成されます。渡したコンテキストオブジェクトが正しいかどうかわかりません。ソースコードに追加したコメントに注意してください。以下では、関連するクラスと関数を追加しました。さらに詳しい情報が必要な場合はコメントを残してください。

..。

..。

..。

..。

アプリケーションをデバッグモードで実行すると、メソッドのブロックのフレームワーククラスThreadPoolExecutorになります。finallyrunWorker()


編集:
これが完全な例外スタックトレースです。

CustomSQLiteOpenHelper.insertTestData()を呼び出すメソッドについては触れませんでしたgetWritableDatabase()insertTestData()のメソッドを呼び出しますCustomSQLiteOpenHelper.onCreate()。クラッシュは、アプリケーションがまだデータベースを作成していないときはいつでも発生します。要約すると、hawaii.five-0は完全に正しかったです!

0 投票する
1 に答える
209 参照

android - アンドロイドのSQLクエリ

文字列配列の値に等しい data1 フィールドを持つデータベースから行をフェッチしようとしています。これは私がやろうとしている方法です..しかし、それはsqliteexceptionを与えています。

c はカーソルです。id は、データベースの DATA1 フィールドの文字列と一致する必要がある文字列を含む文字列配列です。これを行う他の方法はありますか?? おそらく「IN」を使用していますか?logcat 例外は次のとおりです。

07-03 17:42:49.118 391 391 E DatabaseUtils: android.database.sqlite.SQLiteException: 範囲外のバインドまたは列インデックス: ハンドル 0x584c30

0 投票する
1 に答える
1434 参照

android - コンテンツプロバイダーを使用して、あるデータベースのコンテンツを別のデータベースにコピーします

この方法を使用して、データベースのコンテンツを無料アプリから有料アプリにコピーしようとしていますが、最後のステップでかなり迷っています。

プロバイダーの存在を確認し、データを有料アプリにロードします。

私は次のようにプロバイダーの存在を確認できます:

しかし、私はコピーを行う方法がわかりませんか?

私は次のようなContentResolverを取得しようとしました:

私はまだこれをテストすることができませんでした、しかしそれがうまくいくとしても、私は次のステップに関して迷子になります。あるデータベースから別のデータベースにデータを取得するにはどうすればよいですか?

0 投票する
1 に答える
298 参照

android - PeriodicSyncをリセットする方法

PeriodicSyncの期間をリセットする方法はありますか?

つまり、期間が10分で、最後の同期から7分が経過している場合は、期間をリセットして、次の同期が3分ではなく10分以内に再度行われるようにします。

ContentResolverにはこのためのメソッドがありません。私はしようとしました:

  • 既存のPeriodicSyncに対してContentResolver.addPeriodicSync()を呼び出します。javadocsに記載されているように、期間は更新されますが、リセットされません。
  • PeriodicSyncを停止して開始します。この場合、再起動時に同期がトリガーされますが、これは望ましくありません。

ありがとうございました。

0 投票する
3 に答える
5874 参照

android - Android でコンテンツ プロバイダーを使用してアイテムを一括削除する

テーブル内のいくつかのアイテムを一括削除しようとしています。

ただし、この次のエラーが引き続き発生します

java.lang.IllegalArgumentException: バインド引数が多すぎます。3 つの引数が指定されましたが、ステートメントには 1 つの引数が必要です。

0 投票する
2 に答える
4340 参照

android - 通常のSQLIteストレージよりもContentProviderを使用する利点は何ですか?

ContentResolver-> ContentProviderメカニズムを使用する代わりに、複数のアプリケーション間でデータを共有したいのですが、SQLite DB操作を正しく実行するプロセスと通信するクライアントライブラリを定義するだけで済みますか?

プロセスにデータを公開させることでは達成できない、ContentProviderがここにもたらすものは何ですか?

0 投票する
2 に答える
2588 参照

android - ContentResolver.notifyChangeをJUnitテストする方法

私はのテストを書いています、ContentProviderinsertは変更について通知していますgetContext().getContentResolver().notifyChange(mUri, null);

私のテストクラスは拡張しProviderTestCase2ます。次の模擬ContentObserverクラスを作成しました。

これがテストケースです。

呼び出されたことがないようonChangeですが、私もContentObserverMock co = new ContentObserverMock(new Handler());同じ結果で試してみました。

私はここで何を間違っているのですか?

0 投票する
2 に答える
6269 参照

android - Android: WHERE 句を選択した SQLite クエリが処理されない

ContentResolverのクエリの選択文字列に SQL WHERE句を定義して、データベースの結果を制限しようとしています。

...

データベースの列は次のように定義されています...

...

カーソルで送信されたクエリを検査できるかどうかは特にわかりません。その場合、送信した WHERE 句が含まれていません。

選択文字列の例を次に示します。

質問:

  1. WHERE 句は構文的に正しいですか?
  2. アポストロフィは必要ですか?
  3. クエリで一度に両方のパラメーター (selection、selectionArgs) を使用する必要がありますか?
  4. クエリ全体をどこでデバッグできますか?

編集:

これがContentProviderquery()メソッドです...

...明らかに、biegleux が推測したように、パラメーターを渡すのを忘れていました。どっ!
データベースメソッドの現在の実装は次のとおりです...

メソッドのシグネチャを次のように変更して、すべてのパラメーターを渡すことをお勧めしますか? この方法では、データベース インターフェイスの多くを公開していませんか?

0 投票する
4 に答える
4150 参照

android - ContentProvider を使用して複数のテーブルに挿入する

リレーションシップを持つテーブルがほとんどないプライベートContentProviderを実装しています(1対多、多対多)。私の現在の実装では、すべてのテーブルに URI でアクセスできます。内部の「スルー」テーブルに URI でアクセスする必要がないように、インターフェイスを単純化するにはどうすればよいですか?

たとえば、POSTS テーブルがあり、各 POST には TAGGINGS テーブルを介して多くの TAGS があります。私は POSTS URI とのみ対話し、ContentProvider.

結合されたテーブルでカーソルを返すのは簡単ですqueryが、どうすればこれを行うことができinsertますか? bulkInsert私が調べるべきことは何ですか?