问题标签 [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.
android - Android - 从小部件调用活动
我目前有我的应用程序Hire A Droid与主应用程序捆绑在一起的小部件。我想解开小部件并将其作为单独的产品发布。但是 - 小部件依赖于Activities
主应用程序,因此我需要在这两个主要Activity
从小部件调用主应用程序的特定部分之间导航。所以基本的想法 - 应用程序可以在没有小部件的情况下工作,小部件成为“附加”选项。
从独立小部件调用应用程序活动的“正确”方式是什么?我是否将主应用程序转换为内容提供者?你能指出我的任何代码示例吗?
新年快乐!
PS 我不是在问如何从捆绑在同一个 APK 中的小部件中调用活动。该问题特别指出,小部件与其调用的应用程序分开分发
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 请求读取短信的权限?
android - 内容提供者是我的应用程序的一部分吗?
我需要创建 3 件事:
- 内容提供商
- 服务
- 应用
我想知道这三个是否都将在一个项目中,或者它们将是三个不同的项目?
另外,如何将我的内容提供者限制为我的服务和我的应用程序?
问候,
Pentium10
android - 自定义 ContentProvider - openInputStream()、openOutputStream()
内容提供者/解析器 API 提供了一种复杂但稳健的方式,使用 URI 和openInputStream()
andopenOutputStream()
方法在进程之间传输数据。自定义内容提供者能够openFile()
使用自定义代码覆盖该方法,从而有效地将 URI 解析为Stream
; 但是, 的方法签名openFile()
具有ParcelFileDescriptor
返回类型,并且不清楚如何为动态生成的内容生成正确的表示以从该方法返回。
现有代码库中是否有动态内容的实现ContentProvider.openFile()
方法示例?如果没有,您能否建议这样做的源代码或流程?
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
隐藏了方法,我如何获得正确的参考?
我运气不好?
android - 列表中的复选框被意外选中
我在由 Custom 绑定的列表中有复选框列表simpleCursorAdapter
。在我的 customsimpleCursorAdapter
中,我已经覆盖newView
并bindView
进行了修改。我设法以某种方式进行多项选择。奇怪的是,在我从列表中删除任何项目后,第一个项目的复选框突然被选中。这是怎么发生的?我该如何解决?
我的SimpleCursorAdapter
班级:
这是ListActivity
该类中的代码部分,它描述了删除复选框项目的按钮:
android - 具有多个子表的 ContentProvider 的类结构
ContentProvider 文档说要在 AndroidManifest 中为您的 ContentProvider 类创建一个条目。如果您的类支持多个子表,则必须为每个子表声明一个 CONTENT_URI 常量。如何?除非您为每个子表进行子类化,否则您不能这样做。为什么不只是有多个提供者?
您是否将子表提供程序实现为后代?有多个子表,还是只有一个 ContentProvider 类?
如您所见,我对文档感到困惑。上面写着:
定义一个名为 CONTENT_URI 的公共静态最终 Uri。这是代表完整内容的字符串:您的内容提供商处理的 URI。您必须为此值定义一个唯一的字符串。最好的解决方案是使用内容提供者的完全限定类名(小写)。因此,例如,TransportationProvider 类的 URI 可以定义如下:
如果提供者有子表,还要为每个子表定义 CONTENT_URI 常量。这些 URI 都应该具有相同的权限(因为它标识了内容提供者),并且只能通过它们的路径来区分。例如:
那么,我们创建了多少类来处理火车、航空/国内和航空/国际?
android - Android - 如何在应用安装时仅填充一次内容提供程序?
我的应用程序中有一个用作 ContentProvider 的数据库。
它保存应用程序的设置值,当我安装应用程序时,我希望它只添加一次硬编码的值集。
这就是我目前正在尝试的方式。
这是 addNewSettings 方法:
但是,每次应用程序启动时,它都会添加一个新的设置对象,我只希望它在安装应用程序时应用一个对象,仅此而已。
有没有人对此有更好的解决方案?还是我的代码有缺陷的原因?
android - 在 Android 上,如何向 LiveFolders 授予我的 ContentProvider 所需的权限?
在 Android 上,对于需要 FINE_LOCATION 权限的内容提供者,如何创建 LiveFolder?
LiveFolder 不断com.android.launcher.LiveFolderAdapter.query(LiveFolderAdapter.java:58)
从java.lang.SecurityException: Permission Denial
.
我一直在寻找如何授予 LiveFolder 权限,但找不到这个。
java - 在 Android 中调用游标时收到 NullPointerException
我正在创建一个应用程序,它使用 GPS 跟踪用户位置,使用内容提供程序将经度和纬度存储在数据库中,然后将第一个经度和纬度输出到地图视图。
我可以使用这行代码创建光标:
但是,当我调用移动到数据库中的第一行甚至尝试使用关闭游标时,c.close();
我收到一个NullPointerException
.
编辑:为了清楚起见,我可以在数据库中以毫为单位存储经度、纬度和时间,然后问题是从数据库中取出数据并将其显示在地图上。