我正在同一公司的两个应用程序上工作。我的要求是 “当我安装两个新应用程序并登录到一个应用程序时,它应该自动登录到另一个应用程序。当我从一个应用程序注销时,同一用户也应该从另一个应用程序注销。”
例如。我有2个应用程序。
当我从用户“ 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
那我该如何实现呢?