问题标签 [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 投票
1 回答
5519 浏览

android - Android - 从小部件调用活动

我目前有我的应用程序Hire A Droid与主应用程序捆绑在一起的小部件。我想解开小部件并将其作为单独的产品发布。但是 - 小部件依赖于Activities主应用程序,因此我需要在这两个主要Activity从小部件调用主应用程序的特定部分之间导航。所以基本的想法 - 应用程序可以在没有小部件的情况下工作,小部件成为“附加”选项。

从独立小部件调用应用程序活动的“正确”方式是什么?我是否将主应用程序转换为内容提供者?你能指出我的任何代码示例吗?

新年快乐!

PS 我不是在问如何从捆绑在同一个 APK 中的小部件中调用活动。该问题特别指出,小部件与其调用的应用程序分开分发

0 投票
1 回答
6677 浏览

android - 如何在Android中查询彩信登录

在我的应用程序中,我需要同时查询 SMS 和 MMS 日志以获取所有传入和传出消息的历史记录。这段代码非常适合 SMS:

但是当我尝试以下操作时,我会得到完全不同的结果:

SMS查询返回的数据包括消息地址(电话号码)、联系人姓名、消息主题、消息正文等... MMS的相同查询返回一堆我无法理解的空值或数值字段的。我真的需要一个当前在手机上的所有彩信的列表,其中包含与之关联的电话号码或联系人 ID,以及该消息是传入消息还是传出消息。在 SMS 查询结果中,我可以从字段中获取电话号码address,以及从字段中获取传入/传出类型,type但是当我查询 MMS 时,这些都不存在。

对于此类 MMS 数据,我需要查询不同的内容 Uri 吗?任何帮助将不胜感激。

编辑:澄清一下,我完全知道这是一个不受支持的内容提供商。但是,由于没有支持的方式来执行此操作,我完全愿意在每部手机/每个操作系统版本的基础上进行测试和支持。为了让讨论保持正轨,假设这个问题特定于 HTC Dream (G1) 或 HTC Magic (MyTouch) 上的 Android 1.6。您将如何在该特定手机和操作系统版本上完成此任务?或者,如果在这些设备上不可能,但在摩托罗拉 Droid 上的 Android 2.0 上是可能的,那么我会发现这些信息也很有帮助。但无论如何,让我们继续讨论如何以受支持或不受支持的方式完成此任务,而不是让它演变成关于我们应该如何远离 API 不支持的事情的讨论,这是我发现 Android 讨论组中充满的东西,我觉得它几乎没有提供任何帮助。如果我使用的是不受支持的方法,那很好,请告诉我完成该任务的受支持方法。如果没有支持的方法,那么为什么 API 支持允许我通过 android.permission.READ_SMS 请求读取短信的权限?

0 投票
2 回答
344 浏览

android - 内容提供者是我的应用程序的一部分吗?

我需要创建 3 件事:

  • 内容提供商
  • 服务
  • 应用

我想知道这三个是否都将在一个项目中,或者它们将是三个不同的项目?

另外,如何将我的内容提供者限制为我的服务和我的应用程序?

问候,
Pentium10

0 投票
2 回答
6962 浏览

android - 自定义 ContentProvider - openInputStream()、openOutputStream()

内容提供者/解析器 API 提供了一种复杂但稳健的方式,使用 URI 和openInputStream()andopenOutputStream()方法在进程之间传输数据。自定义内容提供者能够openFile()使用自定义代码覆盖该方法,从而有效地将 URI 解析为Stream; 但是, 的方法签名openFile()具有ParcelFileDescriptor返回类型,并且不清楚如何为动态生成的内容生成正确的表示以从该方法返回。

从内容提供者返回内存映射的 InputStream?

现有代码库中是否有动态内容的实现ContentProvider.openFile()方法示例?如果没有,您能否建议这样做的源代码或流程?

0 投票
4 回答
19444 浏览

android - Android:使用 ContentResolver 时的 SQLite 事务

目标:从 XML 数据刷新数据库

过程:

  • 开始交易
  • 从表中删除所有现有行
  • 每个已解析 XML 的每个主要元素都行插入主表并获取 PK
  • 每个主元素的每个子元素都将记录插入到第二个表中,从上一步提供 FK
  • 提交事务

就数据库操作而言,相当标准的东西。问题是 CRUD 操作不是在内部完成,ContentProvider而是在使用ContentResolver,因此例如插入看起来像resolver.insert(CONTENT_URI, contentValues). ContentResolver API 似乎与事务无关,我无法使用bulkInsert,因为我间歇性地插入 2 个表(另外我也想delete在事务中插入)。

我正在考虑ContentProvider通过使用将我的自定义注册为侦听器,registerContentObserver但是由于ContentResolver#acquireProvider隐藏了方法,我如何获得正确的参考?

我运气不好?

0 投票
3 回答
2002 浏览

android - 列表中的复选框被意外选中

我在由 Custom 绑定的列表中有复选框列表simpleCursorAdapter。在我的 customsimpleCursorAdapter中,我已经覆盖newViewbindView进行了修改。我设法以某种方式进行多项选择。奇怪的是,在我从列表中删除任何项目后,第一个项目的复选框突然被选中。这是怎么发生的?我该如何解决?

我的SimpleCursorAdapter班级:

这是ListActivity该类中的代码部分,它描述了删除复选框项目的按钮:

0 投票
1 回答
1428 浏览

android - 具有多个子表的 ContentProvider 的类结构

ContentProvider 文档说要在 AndroidManifest 中为您的 ContentProvider 类创建一个条目。如果您的类支持多个子表,则必须为每个子表声明一个 CONTENT_URI 常量。如何?除非您为每个子表进行子类化,否则您不能这样做。为什么不只是有多个提供者?

您是否将子表提供程序实现为后代?有多个子表,还是只有一个 ContentProvider 类?

如您所见,我对文档感到困惑。上面写着:

定义一个名为 CONTENT_URI 的公共静态最终 Uri。这是代表完整内容的字符串:您的内容提供商处理的 URI。您必须为此值定义一个唯一的字符串。最好的解决方案是使用内容提供者的完全限定类名(小写)。因此,例如,TransportationProvider 类的 URI 可以定义如下:

如果提供者有子表,还要为每个子表定义 CONTENT_URI 常量。这些 URI 都应该具有相同的权限(因为它标识了内容提供者),并且只能通过它们的路径来区分。例如:

那么,我们创建了多少类来处理火车、航空/国内和航空/国际?

0 投票
1 回答
701 浏览

android - Android - 如何在应用安装时仅填充一次内容提供程序?

我的应用程序中有一个用作 ContentProvider 的数据库。

它保存应用程序的设置值,当我安装应用程序时,我希望它只添加一次硬编码的值集。

这就是我目前正在尝试的方式。

这是 addNewSettings 方法:

但是,每次应用程序启动时,它都会添加一个新的设置对象,我只希望它在安装应用程序时应用一个对象,仅此而已。

有没有人对此有更好的解决方案?还是我的代码有缺陷的原因?

0 投票
1 回答
1222 浏览

android - 在 Android 上,如何向 LiveFolders 授予我的 ContentProvider 所需的权限?

在 Android 上,对于需要 FINE_LOCATION 权限的内容提供者,如何创建 LiveFolder?

LiveFolder 不断com.android.launcher.LiveFolderAdapter.query(LiveFolderAdapter.java:58)java.lang.SecurityException: Permission Denial.

我一直在寻找如何授予 LiveFolder 权限,但找不到这个。

0 投票
1 回答
2122 浏览

java - 在 Android 中调用游标时收到 NullPointerException

我正在创建一个应用程序,它使用 GPS 跟踪用户位置,使用内容提供程序将经度和纬度存储在数据库中,然后将第一个经度和纬度输出到地图视图。

我可以使用这行代码创建光标:

但是,当我调用移动到数据库中的第一行甚至尝试使用关闭游标时,c.close();我收到一个NullPointerException.

编辑:为了清楚起见,我可以在数据库中以毫为单位存储经度、纬度和时间,然后问题是从数据库中取出数据并将其显示在地图上。

更新代码:

更新权限: