問題タブ [android-contentprovider]

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 投票する
0 に答える
765 参照

android - ExpandableListActivity および SimpleCursorTreeAdapter での IllegalStateException

com.example.android.apis.view の com.example.android.notepad と ExpandableList2.java を使用して、sqlite データベースで 2 つのテーブルを提供するコンテンツ プロバイダーと、ExpandableListActivity サブクラスを使用する表示アクティビティを含む単純なアプリケーションを作成しました。 . ExpandableList、およびグループと子のレイアウトに独自のレイアウトを使用しています。データベースの内容は表示アクティビティで適切に表示されており、グループは正常に折りたたまれて展開されます。ただし、グループを展開し、子をクリックして選択すると、次のスタック ダンプが表示されます。

スレッド [<3> main] (中断 (例外 IllegalStateException))
CursorWindow.getLong(int, int) 行: 331
SQLiteCursor(AbstractWindowedCursor).getLong(int) 行: 108
ContentResolver$CursorWrapperInner(CursorWrapper).getLong(int) 行: 127
CursorTreeAdapter$MyCursorHelper.getId(int) 行: 435
SongsList $SetListExpandableListAdapter(CursorTreeAdapter).getChildId(int, int) 行: 172
ExpandableListConnector.getItemId(int) 行: 428
AbsListView$PerformClick.run() 行: 1635
ViewRoot(Handler .handleCallback(Message) 行: 587
ViewRoot(Handler).dispatchMessage(Message) 行: 92
Looper.loop() 行: 123
ActivityThread.main(String[]) 行: 4203
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) 行: 利用不可 [ネイティブ メソッド]
Method.invoke(Object, Object.. .) 行: 521
ZygoteInit$MethodAndArgsCaller.run() 行: 791
ZygoteInit.main(String[]) 行: 549
NativeStart.main(String[]) 行: 利用不可 [ネイティブ メソッド]

私のSimpleCursorTreeAdapter:

IllegalStateException がスローされる前にコードにブレークポイントを設定することはまだできていません。私は例のようにやっているように見えますが、どうやら何かが欠けているようです。

いくつかの助けをいただければ幸いです。

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

java - Uriによって引き起こされたCursorIndexOutOfBoundsException

これが私のLogCatログです:

onCreate(Bundle)カーソルを取得する方法は次のとおりです。

そして、ここから私は実際に活動を開始します。

私はすでに自分のコンテンツプロバイダーを持っていて、それを適切に設定しました。

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

android - サービスでのデータベース呼び出し

私は、REST を多用するアプリケーションに関する Google I/O での Virgil のプレゼンテーションを見てきました。

Google I/O 2010 - Android REST クライアント アプリケーション

メモ帳のチュートリアルでは UI レイヤーから直接データベース呼び出しを行いますが、Virgil はサービスでデータベース呼び出しを行うことを提案しています。

現時点では、アクティビティの onCreate メソッドは、拡張された ContentProvider を使用して SQLite データベースにアクセスし、アクティビティの ListView にアタッチする Cursor をクエリします。

このコードをサービスに移動したいと思います。簡単です。私の質問は、カーソルを UI レイヤーに戻す適切な方法は何ですか? 多くの質問が提起されているのを見てきましたが、より適切な方法があることを示唆する人が常にいるようです。その方法は何ですか?

より具体的には、これまでのところ、Activity はある種のリスナーとして登録する必要があると考えています。サービスで Cursor が取得されると、それにアクセスするために UI レイヤーに通知が設定されます。アクティビティがそれをつかむことができるように、サービスはそれをどこに押し込みますか?

また、私が考えているアーキテクチャは、アクティビティによって呼び出される拡張サービスを持つことです。このサービス内では、拡張された ContentProvider を使用してデータベース トランザクションが行われ、リッスンしているすべてのアクティビティに通知され、Web サービスにヒットするスレッドが起動されます。したがって、1 つの拡張サービス、1 つの拡張 ContentProvider、およびさまざまな Web サービス用のいくつかの拡張スレッドがあります。これは受け入れられますか?

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

java - 競合するコンテンツ プロバイダ

ContentProvider を使用してアプリケーションを開発しています。マニフェストで宣言されています:

すべてが正常に機能しており、プロバイダーにアクセスできます。問題は、自分のアプリのデモ バージョンを作成し、同じコンテンツ プロバイダーを共有して、ユーザーがフル バージョンをインストールしたときにデータの同期が保たれるようにすることです。また、フルバージョンまたはデモバージョンのみをインストールできる必要があります。したがって、コンテンツ プロバイダを両方に含める必要があります。

ここで、両方のアプリをインストールしようとすると、INSTALL_FAILED_CONFLICTING_PROVIDERエラー メッセージが表示されます。明らかに、両方の AndroidManifest が同じコンテンツ プロバイダーを宣言しているためです。

マニフェストで、このコンテンツ プロバイダーがまだ存在しない場合にのみ使用するように指示する方法はありますか? または別の回避策?

解決策は、フル バージョンがデモ コンテンツ プロバイダーからフル バージョン コンテンツ プロバイダーにデータを移行することですが、それは避けたいと思います。

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

android - 添付された電子メールの Intent.SEND で使用される一時ファイルを削除するのはいつですか?

Android デバイスで一時ファイルを生成し、メールに添付します。カスタム コンテンツ プロバイダーを使用して、そのファイルを電子メール アプリケーションにフィードします。問題は、電子メール アプリケーションが最終的に電子メールを送信するまで、1 回ではなく何度もファイルにアクセスすることです (たとえば、下書きを作成するたびに要求を受け取ります)。

そのため、その一時ファイルをいつ削除するかを知るのが難しくなります。

電子メールがいつ配信されたかを知るための安全な方法についてのアイデアはありますか? (下書きフォルダーにメールがしばらく残っている可能性があるため、定期的に削除することも正しくないようです)

助けてくれてありがとう!

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

java - managedQueryは常に同じ結果を返します

私のonItemClickメソッドには次のものがあります。

ここで問題となるのは、呼び出されるたびに、managedQueryが常に同じ結果を返すことです。データベース内のすべてのアイテムを選択しましたが、のテキストは常にAutoCompleteTextView同じです。私はそれをデバッグし、それUri formulaがまさに私が望んでいるものであり、IDが3であることがわかりました。しかしCursor formulaCursorそうではありません。したがって、問題はmanagedQueryです。しかし、私はそれで何も悪いことはわかりませんか?

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

android - Androidの新機能。作成するデータベースの名前をユーザーが指定することはできますか?複数のデータベースの使用についても

私はAndroidを初めて使用します。

複数のデータベースを使用するアプリケーションを作成することを考えています。ユーザーは、作成するデータベースの名前を指定し、/database/ディレクトリに存在するデータベースから使用するデータベースを選択できます。

これはAndroidで可能ですか?

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

android - Activity、Intent、ContentProvider などのクラスのソースは、android.git.kernel.org のどこにありますか?

Activity、Intent、ContentProvider など、SDK の一部のアプリ例で拡張されたクラスに対応する android.git.kernel.org の Android プロジェクトを特定する方法がわかりません。

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

android - コンテンツプロバイダーの代わりにデータベースへの直接アクセスを使用するAndroidアプリケーションの例?

他のアプリケーションとデータを共有する必要がなければ、コンテンツプロバイダーは必要ないことがわかりました。しかし、私が見た例はすべてコンテンツプロバイダーを使用しているため、コンテンツプロバイダーなしで続行し、アプリケーションのデータベースに直接アクセスして得られたデータをアクティビティに取り込む方法がわかりません。

0 投票する
0 に答える
1202 参照

android - Android ContentResolver: 再クエリなしでカーソルを使用してデータを渡すか、アクティビティからクエリを実行するときに正確に実行されたカーソルを取得します

たとえば、ContentProvider(実際にはデータベース呼び出しを実行しません)があり、カーソルを使用していくつかの追加データ(呼び出し統計など)を呼び出し元に渡したいとします。

活動では、私は作りたい:

しかし、カーソルがすでにラップされてスローされているため、これを行うことはできませContentResolver.CursorWrapperInnerClassCastException

使用するときに非常に便利AsyncTaskです:

カーソルを使用してデータを渡す方法、またはクエリから返されたものとまったく同じカーソルを取得するにはどうすればよいですか。それとも無理ですか?