搜索

首页  >  问答  >  正文

android - 安卓两个app之间如何通信

有两个 app 之间需要一次通信,只需要一次,所以我想着用 broadcast。

App A 发一个 broadcast 给 app B,然后 B 需要 start 一个 activity,但 A 还需要等 B 结束这个 activity 之后才能执行下一步。

所以 B 在结束 activity 之后需要让 A 知道,我不确定是还需要从 B 给 A 发一个 broadcast 么?还是有没有什么比较简单的方法,不确定这样互相发送 broadcast 是不是最好的方法。

ringa_leeringa_lee2771 天前978

全部回复(9)我来回复

  • 阿神

    阿神2017-04-18 09:16:32

    不太确定具体的应用场景是什么,只是两个APP间启动相应的组件,还是需要数据传递.根据你的描述,APP A是需要主动调起APP B的.可以试试用Activity的隐式启动看能否解决:

    1. 在APP B中可被调起的Activity 定义好intent-filter,action,data,category...以便可以被隐式启动;
    2. 在APP A中根据APP B 里需要被隐式启动的Activity的intent-filter,封装好intent并startActivityForResult(...),在onActivityResult中等待从APP B返回的结果,进行下一步处理
    3. 在APP B 中被调用的Activity里setResult()设置处理结果.

    回复
    0
  • PHPz

    PHPz2017-04-18 09:16:32

    建议参考下《Android艺术开发探索》的第二章内容,里面对进程之间的通信有详细介绍。

    回复
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:16:32

    看具体.两个程序如果是独立且不可控的话,比如QQ和WEIBO,在你不确保用户是否会同时启动的话,最好的办法是做个公共接口.

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:16:32

    直接用aidl啊App之间通信,妥妥的

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:16:32

    如果只是简单的打开另一个Activity,可以自定义应用的uri,具体看scheme属性scheme属性

    如果是需要更具体的应用间通信的话可以使用aidl

    如果是需要更具体的应用间通信的话可以使用aidl

    类似的还有使用服务作为中转或者使用广播机制

    推荐使用aidl

    🎜

    回复
    0
  • PHPz

    PHPz2017-04-18 09:16:32

    http://blog.csdn.net/github_3... aidl 详细介绍

    回复
    0
  • 阿神

    阿神2017-04-18 09:16:32

    如 @wangxw725 所说, 那才是靠谱的方法, 用广播的可靠性太差, 万一其中一个切换到后台的Activity被系统回收了怎么办? 所以, 还是老老实实用隐式Intent方法吧

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:16:32

    可以借助于AIDL实现进程间通信

    回复
    0
  • 怪我咯

    怪我咯2017-04-18 09:16:32

    楼上都好厉害, 但是这个不是startActivityForResult()的用法?
    A直接调用B的页面, 如果目标页面不方便暴露出来, 就写个中间页面, 专门处理这种调用. 然后onActivityResult()处理.

    回复
    0
  • 取消回复