問題タブ [contentobserver]
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.
android - Android:CursorAdapterのContentObserverとDataSetObserverの登録を解除する方法
適用するContentObserverとDataSetObserverの登録を解除するためのインターフェイスがCursorAdapter側にないことがわかりました。Cursor.getCursor()。close()を使用してカーソルを閉じることはできますが、オブザーバーの登録を解除することはできません。
android - HowToSqlite-ContentObserver
私はAndroidアプリケーションを書いています。そのメイン画面はTabHostに基づいています。各タブは、sqliteデータベースからのデータ選択を保持します。多くの異なるアクティビティでこのデータにアクセスして変更できるため、単一のデータベーステーブルへの変更を追跡するsqliteコンテンツオブザーバーを開発したいと思います。このようなSqliteObserverをどのように実装しますか?
android - 送信されたSMSをキャッチ(Android 2.2)
これに関連するSOに関するいくつかの質問があることを私は知っていますが、それらのどれも私がこれを機能させるのを助けませんでした-送信されているSMSをキャプチャします。私はSamsungの携帯電話でAndroid2.2(FROYO)を使用しています(それがどういうわけか重要な場合)。
Stackoverflowでこれをたくさん検索しContentObserver
、リクエストが必要であることに気づきました。アクティビティの代わりにサービスを使用しているのでContentObserver
、Service
クラスに登録しました。次のようになります。
}
ご覧のとおり、私Toast
はいくつかの場所に配置したので、これがまったく機能しているかどうかを確認できました。残念ながら、この通知は表示されません。また、LogCatのコードを入れてみましたが、何も起こりません。私もUri uriSMSURI = Uri.parse("content://sms");
代わりに入れようとしましcontent://sms/sent
たが、アプリケーションは単に何もしません。もちろん、私はマニフェストで許可を持っています:
私は何が欠けていますか?
java - Sms ContentObserver onChange() が複数回発生する
この質問が何度も聞かれたことは知っていますが、私が見たものから誰も有効な答えを思いつくことができませんでした.
私はテキスト メッセージを傍受するアプリに取り組んでおり、送信 # に応じて、カスタム アラートがポップアップ表示されます。ブロードキャストレシーバーでうまく動作していますが、ユーザーが goSms をインストールしている場合、goSmsonReceive()
がアプリに到達する前にメソッドを中止するため、メソッドが呼び出されることはありません。
これを回避するために、コンテンツオブザーバーを試してみましたcontent://sms/
がonChange()
、まったく同じパラメーターで2回呼び出されました。タイムスタンプを確認しようとしましたが、タイプや設定した他のすべてのパラメーターと同様に同じです。
私が見たところ、これは一般的な問題ですが、どこにも答えられていません。
onChange()
2 回解雇されたため、私も 2 つのアラートを受け取りました。私は一生、これを回避する方法を見つけることができません。
android - カーソルに変更がない場合でも ContentObserver が呼び出される
同期アダプターによって追加された連絡先の 1 つが変更されたときに通知する必要があるコンテンツ オブザーバーがあります。これを行うオブザーバーを登録および登録解除します。
問題は、カーソルが空 (getCount が 0 を返す) の場合でも、オブザーバーを登録した後、ネイティブ アドレス帳で何をしても onChange が呼び出されることです。カーソル内のエントリの 1 つが変更された場合にのみ、オブザーバーを呼び出すべきではありませんか? ドキュメントには次のように記載されています。
このカーソルの背後にあるコンテンツに変更が発生したときに呼び出されるオブザーバーを登録します
「このカーソルを支えているコンテンツ」とは何ですか? カーソル内の連絡先のルックアップのリストだと思っていましたが、ContactsContract.RawContacts.CONTENT_URI を変更するだけで十分のようです。
また、Uri ごとに 1 つのオブザーバーを登録しようとしました。それは役に立ちません。ContentResolver.registerContentObserver のドキュメントには次のように記載されていますが:
特定のコンテンツ URI によって識別されるデータが変更されたときにコールバックを取得するオブザーバー クラスを登録します。
(notifyForDescendentsをfalseに設定しましたが、オブザーバーを呼び出すべきではありませんでした)。
どうしたの?ありがとうございました
android - コンテンツを変更せずにContentObserverをトリガーする
ここに示されているパターンを使用しています:http ://www.youtube.com/watch?v = xHXn3Kg2IQE (ただし、わずかに変更されています。変更は、この質問にひどく関連するものではありません)。
状況は次のようになります。アクティビティはContentProviderにリソースを照会します。ContentProviderは、現在ローカルDBにあるタプルをすぐに返し、RESTメソッドを開始し、サーバーからContentObserverに新しいデータを返すことができます。
しかし、これは私には少し奇妙に感じます。なぜなら、2つの場所でデータを処理する必要があるからです。1つはローカルDB用で、もう1つはRESTメソッドが完了したときです。もちろん、それを処理するためのメソッドを作成することもできますが、それでも役立ちますか?実際にコンテンツを変更せずにContentObserverを手動でトリガーできた場合、データの処理はContentObserver内の1か所でのみ発生します。これは可能ですか?
次に、アクティビティはContentProviderにクエリを実行し、ローカルデータベースのリソースを使用してContentObserverをトリガーします。Webサービスが照会され、RESTメソッドが完了すると、ContentObserverが再度トリガーされます(ローカルデータベースで既に利用可能なデータに加えて、Webサービスからのデータもあるため)。
可能であれば、ContentProviderから返されるカーソルが空/ヌルになる可能性があるため、ContentProviderへのクエリの開始は少し厄介になりますが、すべてを1か所で処理できる場合は受け入れられませんか?
android - 連絡先の ContentObserver のエラー
私は初心者で、新しい連絡先が追加されたときに通知を受け取りたいアプリを開発しています。次のコードを試しましたが、以下の Logcat トレースのようにエラーが発生します。
私が持っているもう 1 つのクエリは、アプリから ContentObserver を登録すると、ユーザーがアプリを終了しても通知されるか、それともサービスで作成してバックグラウンドで実行する必要があるかということです。助けてください
これは、上記のクラスのオブジェクトを作成したサンプル アクティビティです。
Logcat トレース:
android - SMS ContentObserver へのハンドラー
このコードは、次の 2 つの投稿で見つけました。
しかし、MyContentObserver のコンストラクターで渡されたこのハンドラーが何であるかはわかりません。
「content://sms//sent」に ContentObserver を登録して、Android が SMS を送信したときに通知されるようにしたいと考えています。
android - ContentObserver-私が読んだものが信じられない
私は関連するQ&Aを読んだことがありますが、カスタムContentProviderが次のようなことを行うとは信じられません。
... ContentObserversには、rowIdを取得する方法がありません。
これは本当に正しいですか?これは良くないように見えるので、私は何かが欠けているに違いないと思います。
android - Androidでコンテンツオブザーバーを使用する方法
アプリにカーソルを返す関数があります。カーソルは多くの行のデータを返す可能性があり、2 つの結合されたテーブルから常に 5 列のデータを返します。列 1 ~ 4 は変更されません。列 5 は、ユーザーのアクションに基づいて変更できます。行の変更から 5 番目の列が変更されたときに通知するコンテンツ オブザーバーを登録するにはどうすればよいですか。ここに例があります。私のメインのアクティビティでは、私は呼び出します
これにより、5 列のデータが得られます。次に、これらの 5 列のデータを取得し、カーソル アダプターを使用して各行をリスト アイテムとして ListView に配置します。
ユーザーがリスト項目をクリックしていない場合、その項目の背景は単色です。リスト項目をクリックすると、別の色になります。これは単に、閲覧済みのアイテムと未閲覧のアイテムを区別するためのものです。
5 列目は、ヌル、ゼロ (0)、または 1 (1) にすることができます。null の場合、ListView にはありません。ゼロの場合、最初の背景色でリスト ビューに表示されます。1 の場合、2 番目の背景色でリストビューに表示されます。
この問題を解決する最初の方法は、正しい色でリスト ビューからデータを再ロードする 750 ミリ秒ごとに無限にループする Handler を使用することでした。ループバージョンは少しハックっぽいので、データが変更されたときにのみそのハンドラーを呼び出すことをお勧めします。