问题描述
我正在开发一个基于呼叫的支持应用程序,因此我为此使用了 Quickblox SDK,我发现如果我关闭应用程序或应用程序在后台,QuickBlox 无法接收呼叫。 这发生在 (Android >= Oreo) 时。
我知道该服务将移至前台服务列表,并在操作系统将其删除后保留 5 秒。
无论如何,我尝试了以下方法,但在关闭应用程序或将其置于后台后仍然无法接听电话,请寻求帮助。
CallService.java
public class CallService extends Service {
public static void start(Context context) {
Intent intent = new Intent(context,CallService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(intent);
}
else {
context.startService(intent);
}
}
从 PushListenerService.java 我把这个添加到
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
SharedPrefsHelper sharedPrefsHelper = SharedPrefsHelper.getInstance();
if (sharedPrefsHelper.hasQbUser()) {
QBUser qbUser = sharedPrefsHelper.getQbUser();
Log.d(TAG,"App has logged user" + qbUser.getId());
LoginService.start(this,qbUser);
}
}
@Override
protected void sendPushMessage(Map data,String from,String message) {
super.sendPushMessage(data,from,message);
Log.v(TAG,"From: " + from);
Log.v(TAG,"Message: " + message);
}`enter code here`
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.quickblox.sample.videochat.java">
<uses-permission android:name="android.permission.BLUetoOTH" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUdio_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUdio" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.quickblox.sample.messages.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.SYstem_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions"
android:requiredFeature="true"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
android:glEsversion="0x00020000"
android:required="true" />
<application
android:name=".App"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity
android:name=".activities.SplashActivity"
android:screenorientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.LoginActivity"
android:configChanges="keyboardHidden|screenSize|orientation"
android:screenorientation="portrait" />
<activity
android:name=".activities.OpponentsActivity"
android:configChanges="keyboardHidden|screenSize|orientation"
android:launchMode="singleTask"
android:screenorientation="portrait" />
<activity android:name=".activities.PermissionsActivity"
android:screenorientation="portrait" />
<activity
android:name=".activities.CallActivity"
android:configChanges="keyboardHidden|screenSize|orientation"
android:excludeFromrecents="true"
android:launchMode="singleTask"
android:screenorientation="portrait"
android:theme="@style/BaseAppTheme" />
<activity
android:name=".activities.SettingsActivity"
android:configChanges="keyboardHidden|screenSize|orientation"
android:screenorientation="portrait" />
<activity
android:name=".activities.AppInfoActivity"
android:screenorientation="portrait" />
<service android:name=".services.LoginService" android:enabled="true"/>
<service android:name=".services.CallService" android:enabled="true" />
<service
android:name="com.quickblox.messages.services.fcm.QBFcmpushInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service android:name=".services.fcm.PushListenerService"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="com.quickblox.messages.services.fcm.QBFcmpushInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<Meta-data
android:name="com.quickblox.messages.TYPE"
android:value="GCM" />
<Meta-data
android:name="com.quickblox.messages.SENDER_ID"
android:value="@string/sender_id" />
<Meta-data
android:name="com.quickblox.messages.QB_ENVIRONMENT"
android:value="DEVELOPMENT" />
<Meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<Meta-data
android:name="io.fabric.ApiKey"
android:value="4b96a3f33893a42103eae91d2166d0c517b833d3" />
</application>
</manifest>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)