问题标签 [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 数据库中的两个表提供服务,以及一个使用我的 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) line: 435
SongsList $SetListExpandableListAdapter(CursorTreeAdapter).getChildId(int, int) line: 172
ExpandableListConnector.getItemId(int) line: 428
AbsListView$PerformClick.run() line: 1635
ViewRoot(Handler ).handleCallback(Message) 行:587
ViewRoot(Handler).dispatchMessage(Message) 行:92
Looper.loop() 行:123
ActivityThread.main(String[]) line: 4203
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: 不可用 [native method]
Method.invoke(Object, Object.. .) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 791
ZygoteInit.main(String[]) line: 549
NativeStart.main(String[]) line: 不可用 [native method]

我的 SimpleCursorTreeAdapter:

我还不能在抛出 IllegalStateException 之前在我的代码中设置断点。在我看来,我正在做示例所做的事情,但显然我缺少一些东西。

一些帮助将不胜感激。

0 投票
1 回答
291 浏览

java - 由 Uri 引起的 CursorIndexOutOfBoundsException

这是我的 LogCat 日志:

这是onCreate(Bundle)我获取光标的方法:

这是我实际开始活动的地方:

我已经有自己的内容提供者,并且设置正确。

0 投票
2 回答
1002 浏览

android - 服务中的数据库调用

我一直在观看 Virgil 在 Google I/O 上关于 REST-heavy 应用程序的演讲。

Google I/O 2010 - Android REST 客户端应用程序

尽管记事本教程直接从 UI 层进行数据库调用,但 Virgil 建议在服务中进行数据库调用。

目前,我的 Activity 的 onCreate 方法使用扩展的 ContentProvider 来访问 SQLite 数据库以查询 Cursor 以附加到 Activity 的 ListView。

我想将此代码移动到服务中。很容易。我的问题是,将光标传输回 UI 层的适当方法是什么?我已经看到提出的许多问题,并且似乎总是有人建议有更合适的方法来做到这一点。那是什么方法?

更具体地说,到目前为止,我认为 Activity 应该注册为某种监听器。当在 Service 中检索到 Cursor 时,会向 UI 层设置通知以访问它。服务将它推到哪里以便活动可以抓住它?

另外,我考虑的架构是有一个扩展的服务,它被活动调用。在这个服务中,数据库事务将通过使用扩展的 ContentProvider 进行,任何监听的活动都将被通知,并且将启动线程以访问 Web 服务。所以,我有 1 个扩展服务、1 个扩展 ContentProvider 和几个用于不同 Web 服务的扩展线程。这似乎可以接受吗?

0 投票
1 回答
2908 浏览

java - 冲突的内容提供者

我正在使用 ContentProvider 开发应用程序。它在清单中声明:

一切正常,我可以访问提供程序。问题是我想创建我的应用程序的演示版本,并且我希望它共享相同的内容提供程序,因此当用户安装完整版本时,数据会保持同步。此外,应该可以只安装完整版或演示版。因此,我必须在两者中都包含我的内容提供者。

现在,当我尝试安装这两个应用程序时,我收到一条INSTALL_FAILED_CONFLICTING_PROVIDER错误消息,显然是因为两个 AndroidManifest 都声明了相同的内容提供程序。

有没有办法在清单中告诉这个内容提供者只有在它不存在时才应该使用?还是另一种解决方法?

一个解决方案是完整版将数据从演示内容提供商迁移到完整版内容提供商,但我宁愿避免这种情况。

0 投票
1 回答
939 浏览

android - When to delete a temporary file used in Intent.SEND for attached email?

We generate a temporary file on an Android device and attach it to an email. We use a custom Content Provider to feed that file to the email application. The problem is that the email application access the file many times, instead of once, until it finally sends the email (for example, every time it writes a draft we get a request).

That makes hard to know when to delete that temporary file.

Any ideas on a safe method to know when our email was delivered so we can clean the device and not leave trash behind? (periodically delete also does not seem right as the phone can be for a while with the email in the Drafts folder)

Thanks a lot for the help!

0 投票
1 回答
280 浏览

java - managedQuery 总是返回相同的结果

在我的 onItemClick 方法中,我有:

现在的问题是每次调用它时,managedQuery总是返回相同的结果。我选择了数据库中的所有项目,并且文本AutoCompleteTextView始终相同。我调试了它,发现这Uri formula正是我想要的,id 为 3。但Cursor formulaCursor不是。所以问题是托管查询。但我看不出有什么问题吗?

0 投票
1 回答
200 浏览

android - 安卓新手。用户是否可以指定要创建的数据库的名称?也关于使用多个数据库

我对 Android 很陌生。

我正在考虑创建一个使用多个数据库的应用程序。用户将能够指定要创建的数据库的名称,并从 /databases/ 目录中现有的数据库中选择要使用的数据库。

这在android中可能吗?

0 投票
1 回答
2030 浏览

android - 在 android.git.kernel.org 上哪里可以找到 Activity、Intent 和 ContentProvider 等类的源代码?

不确定如何确定 android.git.kernel.org 上的哪个 android 项目对应于 SDK 中某些应用示例中扩展的类,例如 Activity、Intent 和 ContentProvider。

0 投票
3 回答
1781 浏览

android - 使用直接数据库访问而不是内容提供程序的 android 应用程序示例?

刚刚发现如果我不需要与其他应用程序共享数据,我不需要内容提供者。但是由于我看到的示例都使用了内容提供程序,因此我不确定如何在没有它们的情况下继续使用从直接访问我的应用程序数据库中获得的数据来填充活动。

0 投票
0 回答
1202 浏览

android - Android ContentResolver:通过游标传递数据而无需重新查询或从活动查询时获取确切执行的游标

说,我有一个ContentProvider(实际上不执行数据库调用)并且我想将一些附加数据(例如,调用统计信息)与光标传递给调用者:

在活动中,我想做:

但我不能这样做,因为光标已经被包裹ContentResolver.CursorWrapperInner并被ClassCastException抛出。

使用时会非常方便AsyncTask

如何使用游标传递数据或获得与查询返回的游标完全相同的游标。或者这是不可能的?