我一直在研究如何在两个应用程序之间共享数据。这是我想要完成的事情。我有一个 ocr 应用程序和一个 XMPP 应用程序。XMPP 应用程序已连接到 openfire 服务器,并成功从 android 手机发送消息到我笔记本电脑上的 spark 客户端信使。现在我想做的是通过 ocr 应用程序中的相机拍照,然后将其转换为存储在字符串中的文本。现在我想将该字符串提供给我手机上的 XMPP 客户端应用程序,以便它可以将该文本发送到我笔记本电脑上的 spark 客户端信使。我已经成功地在这里解释了我的情况。我尝试使用套接字编程来做到这一点,但失败了。然后我看到有人说可以通过 sharedpreferences 对象来做到这一点,但是 xmpp 应用程序如何知道现在 ocr 应用程序已经转换了文本并且我应该接收它是没有意义的。请帮我解决这个问题。解释以及一些代码将不胜感激!
2 回答
使用广播接收器 ( http://developer.android.com/reference/android/content/BroadcastReceiver.html ) 跨应用程序发送数据。
这可能有助于 如何在 Android 的不同应用程序中使用广播接收器?
您的问题是:如何将数据从运行手机的 ocr 应用程序发送到运行在同一部手机中的 xmpp 应用程序。
基本上,您正在寻找关于两个应用程序(进程)如何通信的解决方案。
解决方案:
先决条件1:有一个同意广播ocr和xmpp应用程序的ACTION。
先决条件2:在您的 ocr 应用程序中创建一个数据库表来存储您的文本。
先决条件3:在您的数据库之上创建一个内容提供者
现在,一旦在您的 ocr 应用程序中拍摄一些照片,将相机转换的文本数据放入您的数据库表中。使用上述约定的 ACTION 发送广播,以便 XMPP 应用程序了解您的数据已准备好。在发送此广播时,发送您已在其中放置要共享的文本的表的 URI。
另一方面,一旦xmpp app在其receiver中接收到广播,根据URI,它可以通过内容解析器从ocr app的表中查询和获取数据。
注意:您可以直接将您的相机图片存储在sd卡中,并且可以将该图片的路径放入您的数据库表中。而不是将图片转换为文本格式。
这只是我对如何做到这一点的随机想法。也许你可以获得比这更好的技术。
您可以研究的其他想法是:
在两个应用程序之间放置一个公共共享内存。将共享数据放入该内存区域并访问它。(比如活页夹如何在内部工作)
为 ocr 和 xmpp 应用程序提供相同的用户 id,以便 xmpp 可以直接访问 ocr 应用程序的数据库表的数据。如果两个应用程序具有相同的 linux 用户 ID,则两者都可以共享共享的首选项文件或数据库文件。
希望能帮助到你。