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
相关产品推荐
相关产品推荐

