You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jitsi Android SDK 6.1.0加入/创建会议时崩溃问题求助

问题:集成Jitsi Android SDK加入会议时应用崩溃

环境信息

Android Studio Dolphin | 2021.3.1 Patch 1
Build #AI-213.7172.25.2113.9123335, built on September 30, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0

核心代码(DashboardActivity.java)

package com.skymeet.videoConference;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

import org.jitsi.meet.sdk.JitsiMeet;
import org.jitsi.meet.sdk.JitsiMeetActivity;
import org.jitsi.meet.sdk.JitsiMeetConferenceOptions;

import java.net.MalformedURLException;
import java.net.URL;

public class DashboardActivity extends AppCompatActivity {

    EditText codeBox;
    Button joinBtn, shareBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dashboard);

        codeBox = findViewById(R.id.codeBox);
        joinBtn = findViewById(R.id.joinBtn);
        shareBtn = findViewById(R.id.shareBtn); // not implemented yet

        URL serverURL = null;
        try {
            serverURL = new URL("https://meet.jit.si");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        JitsiMeetConferenceOptions defaultOptions
                = new JitsiMeetConferenceOptions.Builder()
                .setServerURL(serverURL)
                .setFeatureFlag("welcomepage.enabled", false)
                .build();

        JitsiMeet.setDefaultConferenceOptions(defaultOptions);

        joinBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                JitsiMeetConferenceOptions options
                        = new JitsiMeetConferenceOptions.Builder()
                        .setRoom(codeBox.getText().toString()).setFeatureFlag("welcomepage.enabled", false)
                        .build();
                JitsiMeetActivity.launch(DashboardActivity.this, options);
            }
        });
    }
}

崩溃报错信息

java.lang.RuntimeException: Unable to start service org.jitsi.meet.sdk.JitsiMeetOngoingConferenceService@dc6a12a with Intent(cmp=com.skymeet.videoConference/org.jitsi.meet.sdk.JitsiMeetOngoingConferenceService (has extras)): java.lang.IllegalArgumentException: Invalid notification (no valid small icon): Notification(channel-JitsiOngoingConferenceChannel shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0xa color=0x00000000 category=call actions=2 vis=PUBLIC)

at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4802)
at android.app.ActivityThread.access$2100(ActivityThread.java:276)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2156)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:210)
at android.os.Looper.loop(Looper.java:299)
at android.app.ActivityThread.main(ActivityThread.java:8213)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)

Caused by: java.lang.IllegalArgumentException: Invalid notification (no valid small icon): Notification(channel-JitsiOngoingConferenceChannel shortcut=null contentView=null vibrate=null sound=null defaults=0x0 flags=0xa color=0x00000000 category=call actions=2 vis=PUBLIC)

at android.app.NotificationManager.fixNotification(NotificationManager.java:699)
at android.app.NotificationManager.notifyAsUser(NotificationManager.java:678)
at android.app.NotificationManager.notify(NotificationManager.java:627)
at android.app.NotificationManager.notify(NotificationManager.java:603)
at org.jitsi.meet.sdk.JitsiMeetOngoingConferenceService.onStartCommand(JitsiMeetOngoingConferenceService.java:135)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4784)
... 9 more

解决方案

崩溃核心原因:Jitsi启动会议时会启动前台服务,必须显示通知,但应用未配置有效的通知小图标,导致Android系统拒绝处理通知,进而引发服务启动失败。

步骤1:添加通知小图标资源

在res/drawable目录下添加符合Android规范的通知小图标(要求:单色、透明背景,推荐尺寸24x24dp),命名为ic_notification_small.png或自定义名称。

步骤2:配置通知图标(二选一即可)

方式一:全局配置(推荐)

在AndroidManifest.xml的<application>标签内添加以下meta-data,设置默认通知图标和颜色:

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_notification_small" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_color"
    android:resource="@color/primary_color" /> <!-- 替换为你的应用颜色资源 -->

方式二:Jitsi会议选项中配置

修改DashboardActivity中的Jitsi初始化代码,在构建ConferenceOptions时指定通知图标:

JitsiMeetConferenceOptions defaultOptions
        = new JitsiMeetConferenceOptions.Builder()
        .setServerURL(serverURL)
        .setFeatureFlag("welcomepage.enabled", false)
        .setNotificationIcon(R.drawable.ic_notification_small) // 添加此行
        .build();

步骤3:(可选)确保通知渠道存在(Android 8.0+)

虽然Jitsi会自动创建会议通知渠道,但也可以提前在App启动时创建,避免异常:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    NotificationChannel channel = new NotificationChannel(
        "JitsiOngoingConferenceChannel",
        "会议通知",
        NotificationManager.IMPORTANCE_DEFAULT
    );
    NotificationManager manager = getSystemService(NotificationManager.class);
    if (manager != null) {
        manager.createNotificationChannel(channel);
    }
}

内容的提问来源于stack exchange,提问作者Nilabh Nayan Borthakur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:35:29