1

概述

我正在创建一个 Android 应用程序,它将扫描设备的各个方面(联系人、apns、电子邮件等)

我想让第 3 方应用程序在安装/运行/启动等时向我的应用程序注册 - 使其数据可用于我的应用程序。

问题

如何以标准方式访问此信息?如果我正在创建一个典型的插件式桌面应用程序,我会使用某种形式的界面,但 Android 没有这种能力。我研究了 ContentProviders,但第 3 方应用程序需要开发一个完整的 SQLite 数据库以允许我的应用程序访问其数据。这似乎有点矫枉过正。

有没有办法做到这一点?

4

2 回答 2

2

如果我正在创建一个典型的插件式桌面应用程序,我会使用某种形式的界面,但 Android 没有这种能力。

当然可以

我研究了 ContentProviders,但第 3 方应用程序需要开发一个完整的 SQLite 数据库以允许我的应用程序访问其数据。

不,他们没有。ContentProvider是门面。您可以随心所欲地实施一个。

我想让第 3 方应用程序在安装/运行/启动等时向我的应用程序注册 - 使其数据可用于我的应用程序。

“安装”是不可能的。在首次运行和/或启动时将是可能的。

如何以标准方式访问此信息?

如果您的应用程序将提取数据,除了 aContentProvider或 AIDL 接口,您还可以向第三方应用程序发送命令,startService()并在其中包含一个额外的Intent内容,为第三方应用程序提供用于发送其响应的通道(例如,一Messenger、一PendingIntent、一ResultReceiver)。

相反,如果第三方应用程序将向您推送数据,我会BroadcastReceiver在您的清单中注册一个 , 并让第三方应用程序根据需要发送广播。

于 2011-10-22T12:01:20.850 回答
0

Richbayliss,这是一个有趣的问题。因此,Android 在设计时牢记这一点——应用程序之间的互操作性。因此,让我们将您的问题分解为两个主要资源:

  1. 联系人、应用程序、电子邮件等
  2. 您希望某人传递给您的其他一些数据。

手机中的某些东西就像手机本身一样,就像你提到的那样。所以它的工作方式是这样的:

Android 中有多个“管理器”(例如 ClientConnectionManager),它们就像可以访问所有这些本地信息的看门人。它们当然是访问这些资源的更简单方法。您还可以通过按照您提到的 sqllite 路径访问它们 - 例如,您可以使用最终查找 sqllite db 的游标访问从相机拍摄的照片。

问题的第二部分——你想通过的其他一些东西——让我举一个例子来说明它在 Android 中是如何工作的。您基本上必须在清单中注册某些事件 - 比如说每次有人点击“共享”时您想知道 - 您正在谈论的这些数据被捆绑并在 Intents 中发送。您所要做的就是为此类调用注册您的应用程序并声明一个可以处理特定类型事件的活动。简而言之,谈话发生在意图之间,数据以捆绑的形式传递。

于 2011-10-22T12:08:52.363 回答