問題タブ [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 投票する
5 に答える
12999 参照

android - コンテンツ リゾルバー/プロバイダーを使用してクラスをテストする方法は?

コンテンツ リゾルバーをクエリするクラスをテストしようとしています。

MockContentResolverメソッドを使用してモックしたいと思いqueryます。

問題は、この方法が最終的なものであることです。私は何をすべきか?モッキング フレームワークを使用しますか? 他のクラスをモックしますか?前もって感謝します。

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

android - ファイナライザーでステートメントを解放する

私のコードは次のとおりです。

ただし、次のように例外がスローされます。

Plsはこれを解決するための解決策を提供します

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

android - 特定の URI に対して ContentResolver.notifyChange() が呼び出された場合、この URI の子孫 URI を監視している ContentObserver は通知されますか?

できれば簡単な質問:ContentResolver.notifyChange()特定の URI に対して が呼び出された場合、この URI の子孫ContentObserverURI を監視していることに通知されますか?

たとえば、特定のリソースの URI を観察するためのカーソル設定があるとします。

次に、この URI の祖先への変更を通知しContentResolverます (たとえば、すべての注文を削除したため)。

Cursor監視するために登録されている私のはuriA通知されますか?

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

java - 複数の選択引数に getContentResolver().query を使用するには?

複数の選択引数を使用しようとしてgetContentRsolver().query()いますが、正しい構文を理解できません。私は得ています"SQLiteException: bind or column index out of range"

contactNumberArrayすべての連絡先番号を含む文字列配列です。

このクエリは、文字列配列に連絡先番号が 1 つしかない場合は正常に機能しますが、連絡先番号が複数ある場合は機能しません。複数の selectionargs を照会する特定の方法はありますか?

この問題に関する指針があれば教えてください。

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

android - AccountManager addAccountExplicitly を使用すると、最初の同期に時間がかかる

AccountManager addAccountExplicitly() を使用して、AccountManager にアカウントを追加します。それから私は電話します

それを行った後、デバイスの「アカウントと同期」画面を見ると、自分のアカウントが表示されますが、クリックしても「連絡先の同期」チェックボックスが表示されません。表示されるまで数分かかる場合があります...

追加されているアカウントを聞いて、遅延 (2 秒) 後に次のように呼び出すことがわかりました。

同期中です。

1.アカウントの同期に時間がかかるのはなぜですか? 2.これはアカウントをすぐに同期させる正しい方法ですか? (これは常に機能しますか?)

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

sync - SyncStatusObserverまたは他の手段を使用して同期ステータス情報を取得しますか?

具体的には、'Droid HTC incredible、Androidバージョン2.2、ベースバンド2.15.00.07.28、カーネル2.6.32.17-g9a2fe16、ビルド3.26.605.1、ソフトウェア番号3.26.605.1があります。

EclipseとAndroidSDKがすべてインストールされ、正常に実行されています。EclipseのDroidでデバッグしてシングルステップコードを実行する方法は素晴らしいです。

私は多くの本を読み、すべての例を実践として試し、JavaだけでなくC ++を含む他のオブジェクト指向言語でのソフトウェア開発の長年の経験(> 10年)に基づいていますが、私は選んでいますそれはかなり速く上がります。

また、リポジトリ/gitを実行しているDroidで実行されているソースコードのバージョンもダウンロードしました。FRG83Gpackages/apps / AccountsAndSyncSettings / src / com / android/settingsコードを調べています。 。

今。同期が失敗したときに通知する小さなアプリを作成したいと思います。私がかゆみを感じようとしているのは、GMailの連絡先インターフェースを使用して大量の変更を加えた後(たとえば)、'Droidがそれらを同期できない(おそらく削除が多すぎる?)ということです。そのため、同期が常に失敗する場合は、通知バーアイコンを表示して、この同期の失敗について知らせたいと思います。このようなアプリがないと、失敗していることを最初に示すのは、おそらく2〜3日後に連絡先情報が欠落していることに気付いたときです。

したがって、ロジックは、同期アクションがステータスを変更したときに通知を受けるために、私の小さなアプリがSyncStatusObserverである必要があることを示しているように見えます。次に、その同期でSyncStatusInfoを取得し、どの同期がいつ失敗したかを記録します。私が収集できることから、これはSyncStatusObserverを実装し、ContentResolver.addStatusChangeListenerを呼び出してブロードキャストに接続することを意味します。これを実装しましたが、通知メッセージが表示されます。

アカウントタイプにはゼロから多数のアカウント権限があり、各アカウント権限は同期されるデータのタイプ(連絡先とカレンダーなど)を示すという点で、オブジェクトモデルを理解していると思います。

SyncStatusObserverの単一のメソッドonStatusChanged(final int which)には、「int which」パラメーターがあります。これは、どのアカウントタイプまたはどのアカウント権限が同期ステータスを変更したかを示しているように見えます。私はこれを作成して接続し、ある種のデータが同期されたときに、予想どおり、これらのメソッド呼び出しを受信して​​います。アプリの実行中に、Eclipseデバッガーのログウィンドウでこれを確認しました。

私の質問は、パラメータ値がアカウントタイプやアカウント権限に戻る単一のintをどのように関連付けるかです。SyncInfo getCurrentSync()を呼び出して、アカウント、権限、およびstartTimeを記録したいと思います。(なぜ開始時間ですか?本当に終了時間と終了ステータスが必要ではありませんか?)

ここでstackoverflowを検索すると、投稿で見つかりますAndroid SyncAdapterの進捗状況をどのようにリッスンしますか?SyncStatusObserverは、単一の整数パラメーターであまり有用な情報を伝達しないため、かなり役に立たないことを示しています。おー。わかった。

この質問を見る別の方法があると思います:HTC Incredibleで、ホーム画面で[メニュー]->[設定]->[アカウントと同期]->[Google(リストされているアカウント)]を選択すると、ユーザーインターフェイスに次のように表示されます。 GMailアカウントの各アカウントタイプが正常に同期された最後の時間。この情報を取得するコードはどこにありますか。これは私が求めているのと同じ情報であり、各SyncStatusObserverのonStatusChangedメソッドの呼び出し後にこの情報を取得したいと思います。

Syncadapterの最終更新日を投稿する場合。これは基本的に、最終同期の日付/時刻が現在のDroidコードによって公開されていないことを示しています。

各SyncAdatorsの最後に成功した同期日時を取得する他の方法はありますか?私は本当にかゆみを掻きたいです(いわば)。

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

android - コンテンツ プロバイダーからのコンテンツ リゾルバーのプッシュ通知

コンテンツ プロバイダーがデータを変更した場合に、コンテンツ リゾルバーに通知する方法があるかどうかを知りたいです。

私の場合、データベースのコンテンツを表示するアプリがあります。db のデータを変更する別のアプリがあります。バックグラウンドでデータが変更されたことをプッシュ経由でアプリに通知できるかどうかを知りたいです。

コンテンツ プロバイダーに接続しているコンテンツ リゾルバーに関する情報は見つかりませんでした。また、コンテンツ プロバイダーとリゾルバーの間で間違った方法で通信する方法もわかりません。

可能であるか、より良いアイデアがある場合は、今すぐ誰かを実行してください。

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

java - ContentProviderコードを共有する必要がありますが、固有のコンテンツ権限

ContentProviderを介して共通のデータストレージライブラリを提供する共通のライブラリがあります。次に、個々のアプリケーションはライブラリを参照しますが、独自のデータストレージを持ちます(つまり、データベーススキーマは共有されますが、各アプリには独自のデータベースがあります)。

私の問題は、2つのアプリを同時にインストールすると、権限が同じであるために競合が発生することです。そのため、アプリごとに一意のコンテンツ権限が必要ですが、コードで一意の権限を参照するための適切な方法を見つけることができません(マニフェストの構成は問題ではありません)。推奨されているように、各タイプで静的CONTENT_URIを使用していますが、アプリごとに異なる値を返す必要があります(アプリ固有の権限を参照)。すべてを非静的アクセサーに変える必要があるのではないかと思いますが、実際にはそうしたくありません。私が見逃している他の方法はありますか?おそらくマニフェストに設定できるものはありますか?

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

android - AndroidはContentResolverでクエリを最適化します

コンテンツリゾルバーのクエリを高速化する方法はありますか?適切な予測を行っても、連絡先の照会には少し時間がかかることがわかりました。

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

android - 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");
    これらのウリは何を意味しますか? 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)
    このウリは何?最初の 2 つの uris との違いはevent_uri?reminder_uri

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

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