如果应用程序关闭或在后台,Qucikblox 不会接听电话 [Android]

问题描述

我正在开发一个基于呼叫的支持应用程序,因此我为此使用了 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 (将#修改为@)