【问题标题】:Android cross-application data passingAndroid跨应用数据传递
【发布时间】:2011-10-22 10:57:09
【问题描述】:

概述

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

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

问题

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

有没有办法做到这一点?

【问题讨论】:

    标签: android plugins android-contentprovider cross-application


    【解决方案1】:

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

    Sure it does.

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

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

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

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

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

    如果您的应用程序要拉取数据,除了ContentProvider 或 AIDL 接口外,您还可以通过startService() 向第三方应用程序发送命令,并在提供通道的Intent 中包含额外的供第三方应用用于发送其响应(例如,MessengerPendingIntentResultReceiver)。

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

    【讨论】:

    • 嗨,马克,我正在尝试将特定文件夹/文件路径发送到文件资源管理器。尽管我提供了正确的路径,但文件资源管理器除了打开根目录之外并没有打开该文件夹。我该如何解决这个问题? Uri uri = Uri.parse("/system/usr/apps");intent.setDataAndType(uri, "file/*");
    • @UmerFarooq:由于 Android 没有“文件资源管理器”,因此您需要询问您尝试使用的“文件资源管理器”的作者。
    • 所以没有破解或其他方式将路径传递给资源管理器,因此它直接打开该路径?
    • @UmerFarooq: 嗯……因为你似乎没有读过我的评论,让我们试试粗体字和一些选择性大写的效果。 由于 Android 没有“文件浏览器”,因此您需要询问您尝试使用的任何“文件浏览器”的作者。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 2018-03-13
      • 1970-01-01
      • 2010-11-12
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多