liruo233
liruo233
采纳率50%
2019-06-04 10:34 阅读 737

关于安卓的技术实现问题,同一个手机上两个软件之间的通信和相互调用

5

现在有三个软件,其中一个软件A是其他安卓设备上的,另外两个BC是手机软件,要实现的大体功能是手机和安卓外设wifi热点连接,软件B通过WIFI通信软件A,软件A根据收到的消息来控制安卓外设摄像的开启关闭,这是已经完成的功能。

要实现的功能是软件C有一个按钮,点击按钮,会给同一台手机上的软件B发通讯,软件B收到通讯后给软件A发socket消息,然后把操作结果(成功失败)返回给软件C,这一切都需要后台进行。

主要有下面几个问题:

1. 后台发送进程通信需要什么技术

2. 软件C是一个官方平台,他们要求的样例是是这样的

软件C请求数据样例

//查验终端调用三方测量软件的包名
String packageName = "com.company.*****.****";
Intent intent=new Intent("android.intent.action.VIEW");
intent.setComponent(new ComponentName(packageName, packageName+".RequestAction"));
n.putExtra("cylsh", "*************");
n.putExtra("keystr", "*************");
//启动带回调的窗体
//16是回调码
startActivityForResult(n, 16); 

软件B配置样例

<activity
    android:name="com.company.****.***.RequestAction"
            android:screenOrientation="portrait">
    <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    </intent-filter>
</activity>

软件B返回数据样例

Intent resultIntent = new Intent();
resultIntent.putExtra("code",”1”);
resultIntent.putExtra("message", "消息描述");
resultIntent.putExtra("keystr", "**************");
resultIntent.putExtra("cylsh", "************");
resultIntent.putExtra("clsbdh", " LGBF1****2424");
resultIntent.putExtra("cwkc", "****");
resultIntent.putExtra("cwkk", "****");
//返回数据
setResult(Activity.RESULT_OK, resultIntent);
this.finish();

startActivityForResult(n, 16),软件C发送给软件B消息使用的是这个方法,我测试的结果是直接跳转到软件B的界面,能不能不修改软件C这行代码的前提下对软件B修改,**使其只接收消息,不跳转界面,**需要怎么做

3. 软件B怎么返回数据给软件C

4.

由于安卓技术刚学习,技术水平差,所以软件A和软件B之间的通信必须在软件B中开启热点,软件A中连接,这样才能通信,但软件C调用软件B时总会重新启动软件B,软件B和软件A又得重新链接热点,怎么才能**直接调用正在运行的软件B**

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • dabocaiqq dabocaiqq 2019-06-04 11:46
  • wuhao0134311 彩色葫芦娃 2019-06-10 11:36

    1.楼上正解,广播,简单粗暴。广播也是发送intent的,正好逻辑都不用改了
    2.其次aidl和ContentProvicer,这两个对初学不怎么友好
    3.楼主对socket更熟悉?用socket也可以的,一个app做服务器接收,一个app发送,ip直接用127.0.0.1指向本机就可以了

    点赞 评论 复制链接分享

相关推荐