应用程序间通信,例如Android中的Facebook和Facebook Messenger

时间:2018-11-20 12:31:30

标签: android android-intent broadcastreceiver android-service android-8.0-oreo

我正在同一公司的两个应用程序上工作。我的要求是 “当我安装两个新应用程序并登录到一个应用程序时,它应该自动登录到另一个应用程序。当我从一个应用程序注销时,同一用户也应该从另一个应用程序注销。”

例如。我有2个应用程序。

  1. Facebook
  2. Facebook Messenger。

当我从用户“ John”登录到Facebook时,因此当我打开Facebook Messenger时,它已经以用户“ John”登录。当我从Facebook应用程序注销时,该用户也应该从Facebook Messenger中注销。反之亦然。

如何在Android中实现此功能?实际上,此功能可在以下奥利奥设备中使用。

这是我试图实现的。

代码

在两个应用程序的Application类中注册接收器。

ASampleActionReceiver mASampleActionReceiver = new ASampleActionReceiver();
IntentFilter filterAction = new IntentFilter();
filterAction.addAction("com.sample.example.receiver.operation");
registerReceiver(mASampleActionReceiver, filterAction);

在两个应用程序清单中。

<receiver android:name=".receiver.ASampleActionReceiver">
    <intent-filter>
        <action android:name="com.sample.example.receiver.operation" />
    </intent-filter>
</receiver>

我们在两个应用程序中都有意向服务。 意向服务将从接收方开始

<service
    android:name="com.sample.example.services.SampleOperationService"
    android:enabled="true"
    android:exported="false" />

还有一个Receiver ASampleActionReceiver.java

public class ASampleActionReceiver extends BroadcastReceiver {
    Context mContext;
    @Override
    public void onReceive(Context context, Intent intent) {
        mContext = context;
        AdoddleLog.d("LOG", intent.getExtras().getString("loginData"));
        Intent mIntent = new Intent(mContext, SampleOperationService.class);
        mIntent.putExtras(intent);
        mContext.startService(mIntent);
    }
}

但是具有android 8.0+操作系统的设备,接收器无法正常工作,因为https://developer.android.com/about/versions/oreo/background https://developer.android.com/about/versions/oreo/android-8.0-changes#back-all

那我该如何实现呢?

0 个答案:

没有答案