当前位置: 首页 > 知识库问答 >
问题:

异常:Android.app.ActivityThread.HandleReceiver处的java.lang.RuntimeException

益阳平
2023-03-14

我有一个应用程序发布在谷歌play,我在谷歌控制台下面的崩溃报告,谁能帮助我了解这个问题是从哪里来的,如何得到解决。

java.lang.RuntimeException:在android.app.activitythread.handlereceiver(activitythread.java:3523)在android.app.activitythread.access$1400(activitythread.java:207)在android.app.activitythread.access$H.handleMessage(activitythread.java:1759)在android.os.handler.dispatchMessage(activitythread.java:106)在android.os.looper.loop(looper.java:193)在

通知:

void startNotify(Context context, String playbackStatus, String title) {
        String titlesonge;
        String artist;
        try {
            titlesonge = StringUtils.substringBefore(title, " - ");
            artist = StringUtils.substringAfter(title, " - ");
        } catch (Exception e) {
            titlesonge = title.substring(0, title.indexOf(" - "));
            artist = title.substring(title.lastIndexOf(" - ") - 1);
        }
        int icon = R.drawable.ic_pause_white;
        Intent playbackAction = new Intent(service, RadioService.class);
        playbackAction.setAction(RadioService.ACTION_PAUSE);
        PendingIntent action = PendingIntent.getService(service, 1, playbackAction, 0);
        if (playbackStatus.equals(PlaybackStatus.PAUSED)) {
            icon = R.drawable.ic_play_white;
            playbackAction.setAction(RadioService.ACTION_PLAY);
            action = PendingIntent.getService(service, 2, playbackAction, 0);

        }
        Intent stopIntent = new Intent(service, RadioService.class);
        stopIntent.setAction(RadioService.ACTION_STOP);
        PendingIntent stopAction = PendingIntent.getService(service, 3, stopIntent, 0);

        Intent intent = new Intent(service, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
                Intent.FLAG_ACTIVITY_SINGLE_TOP |
                Intent.FLAG_ACTIVITY_NEW_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(service, 0, intent, 0);
        notificationManager.cancel(NOTIFICATION_ID);
        String PRIMARY_CHANNEL = "PRIMARY_CHANNEL_ID";
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationManager manager = (NotificationManager) service.getSystemService(Context.NOTIFICATION_SERVICE);
            String PRIMARY_CHANNEL_NAME = "PRIMARY";
            NotificationChannel channel = new NotificationChannel(PRIMARY_CHANNEL, PRIMARY_CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
            channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
            if (manager != null) {
                manager.createNotificationChannel(channel);
            }
        }
        NotificationCompat.Builder builder = new NotificationCompat.Builder(service, PRIMARY_CHANNEL)
                .setAutoCancel(false)
                .setContentTitle(titlesonge)
                .setContentText(artist)
                .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.largeicon))
                .setContentIntent(pendingIntent)
                .setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
                .setSmallIcon(R.drawable.smallwidth)
                .setColor(ContextCompat.getColor(context, R.color.colorneeded))
                .addAction(icon, "pause", action)
                .addAction(R.drawable.ic_stop_white, "stop", stopAction)
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setWhen(System.currentTimeMillis())
                .setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
                        .setMediaSession(service.getMediaSession().getSessionToken())
                        .setShowActionsInCompactView(0, 1)
                        .setShowCancelButton(true)
                        .setCancelButtonIntent(stopAction));
        service.startForeground(NOTIFICATION_ID, builder.build());

    }

共有1个答案

漆雕彦
2023-03-14

这将解决三个步骤。1:_打开您的build.gradle(module:app)文件。在application标记下添加这个

defaultConfig {
multiDexEnabled true
}

2:_如果使用appcompact,则在dependencies标记下添加这一行

dependencies {
implementation 'com.android.support:multidex:1.0.3'
}

否则,如果您将项目迁移到AndroidX,则添加以下一行

dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}

3:_打开所有activity Java文件并添加multidex.intall(contextName)

protected void onCreate(Bundle savedInstanceState) {
MultiDex.install(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mine);
        `enter code here`
}
 类似资料:
  • 本文向大家介绍浅谈java异常处理(父子异常的处理),包括了浅谈java异常处理(父子异常的处理)的使用技巧和注意事项,需要的朋友参考一下 我当初学java异常处理的时候,对于父子异常的处理,我记得几句话“子类方法只能抛出父类方法所抛出的异常或者是其子异常,子类构造器必须要抛出父类构造器的异常或者其父异常”。那个时候还不知道子类方法为什么要这样子抛出异常,后来通过学习《Thinking in Ja

  • 我不知道该怎么办。 当我试图从解析器获取语法错误的数量时,它显示0。 编辑: 它返回null。

  • Blade 内置了 异常处理器,在开发者模式下它会将异常输出在前端页面,并在控制台打印堆栈信息,生产环境只打印在控制台。 有些时候不满足我们的需求,这时候就需要自定义异常处理了,比如针对某个自定义的异常进行特殊处理。 我们用一个例子来解释如何操作。 定义了一个名为 TipException 的运行时异常类,用于输出错误消息到前台。 按照上面对异常的处理情况这个异常的堆栈信息会被输出在控制台,生产环

  • 任何方法都可以抛出不同类型的异常。这些异常可能是需要应用程序重新部署来解决的编程错误,或者是不需要重新部署但可以解决的暂时性错误。 Hangfire可以处理所有内部的(属于Hangfire本身)和相关的外部方法(任务,过滤器等)的异常,因此不会导致整个应用程序被关闭。所有内部异常都被记录(所以不要忘记 启用日志),最糟糕的情况是导致后台任务被暂停并延时重试 10 次。 当Hangfire遇到在执行

  • 我们在编写程序的时候,经常需要对异常情况做处理。比如,当一个数试图除以 0 时,我们需要捕获这个异常情况并做处理。你可能会使用类似 if/else 的条件语句来对异常情况做判断,比如,判断除法的分母是否为零,如果为零,则打印错误信息。 这在某些简单的情况下是可以的,但是,在大多数时候,我们应该使用 Python 的异常处理机制。这主要有两方面的好处: 一方面,你可以选择忽略某些不重要的异常事件,或

  • 异常处理可以使程序在流程上更加完善。 在 JavaScript 中可以使用 throw 抛出异常,使用 try ... catch 捕获错误。 1. throw throw 语句用来抛出一个用户自定义的异常。(MDN) throw 用于抛出一个异常,这种异常通常是程序出现了不符合预期的错误。 alert('出错前'); throw '发生了一个错误!'; alert('出错后'); 当出现