一个客户端正在使用我们的应用程序,该应用程序是Moto E4 plus设备上的视频通话应用程序。当我们从服务器收到FCM推送通知时,我们将显示“呼叫”屏幕。因此,对于该特定设备,当应用程序处于“后台”或“已终止”状态时,她无法接听电话。当应用程序在前台运行时,她没有检查它是否正常工作。
下面是我们在FirebaseMessagingService类中使用的代码。
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.d("FirebaseMessaging", "onMessageReceived");
Intent intent = new Intent(AppConstants.INCOMING_CALL_BROADCAST_ACTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendImplicitBroadcast(MyFirebaseMessagingService.this,
intent);
}
private static void sendImplicitBroadcast(Context ctxt, Intent i) {
PackageManager pm = ctxt.getPackageManager();
List<ResolveInfo> matches = pm.queryBroadcastReceivers(i, 0);
for (ResolveInfo resolveInfo : matches) {
Intent explicit = new Intent(i);
ComponentName cn =
new ComponentName(resolveInfo.activityInfo.applicationInfo.packageName,
resolveInfo.activityInfo.name);
explicit.setComponent(cn);
ctxt.sendBroadcast(explicit);
}
}
下面是gradle设置。
android {
compileSdkVersion 27
buildToolsVersion '27.0.2'
defaultConfig {
multiDexEnabled true
applicationId "com.example.videocallapp"
minSdkVersion 19
targetSdkVersion 27
versionCode 48
versionName "2.2"
}
dexOptions {
javaMaxHeapSize "2g"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
我们注意到,当关闭自动启动设置时,服务类无法打开应用程序。但是需要确定之后,我们才能将其介绍给客户。