Android跨应用程序数据传递

时间:2011-10-22 10:57:09

标签: android plugins android-contentprovider cross-application

概述

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

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

问题

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

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:2)

  

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

Sure it does

  

我查看了ContentProviders,但第三方应用需要开发一个完整的SQLite数据库,以允许我的应用访问其数据。

不,他们没有。 ContentProvider是一个门面。你可以随意实施一个。

  

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

“安装”将无法进行。在第一次运行和/或启动时都可以。

  

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

如果您的应用程序将提取数据,除ContentProvider或AIDL界面外,您可以通过startService()向第三方应用发送命令,并在{{1 }}为第三方应用提供用于发送其响应的频道(例如,IntentMessengerPendingIntent

相反,如果第三方应用程序将数据推送给您,我会在您的清单中实施ResultReceiver,并让第三方应用程序根据需要发送广播。

答案 1 :(得分:0)

Richbayliss,这是一个有趣的问题。 所以Android的设计考虑到了这一点 - 应用程序之间的互操作性。因此,让我们将您的问题分解为两个主要资源:

  1. 联系人,应用程序,电子邮件等
  2. 您希望有人传递给您的其他一些数据。
  3. 手机中有些东西就像手机本机一样,就像你提到的那样。所以它的工作方式是这样的:

    Android中有多个“经理”(例如ClientConnectionManager),就像可以访问所有这些本机信息的看门人一样。它们肯定是访问这些资源的更简单方法。你也可以通过你提到的sqllite路径访问它们 - 这个例子就是你可以通过使用游标来访问从摄像机拍摄的照片,游标最终会查找sql​​lite数据库。

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