Исключение: java.lang.RuntimeException на android.app.ActivityThread.handleReceiver - PullRequest
0 голосов
/ 14 мая 2019

У меня есть приложение, опубликованное в Google Play, и я застрял с сообщением о сбое, приведенным ниже, в консоли Google, может ли кто-нибудь помочь мне понять, откуда возникла эта проблема и как ее решить.

java.lang.RuntimeException: на android.app.ActivityThread.handleReceiver (ActivityThread.java:3523) на android.app.ActivityThread.access $ 1400 (ActivityThread.java:207) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1759) на android.os.Handler.dispatchMessage (Handler.java:106) на android.os.Looper.loop (Looper.java:193) на android.app.ActivityThread.main (ActivityThread.java:6863) в java.lang.reflect.Method.invoke (родной метод) на com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:537) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858) Вызвано: java.lang.IllegalStateException: на android.support.v4.media.session.MediaButtonReceiver.onReceive (MediaButtonReceiver.java:124) на android.app.ActivityThread.handleReceiver (ActivityThread.java:3507)

Уведомление :

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 Ответ

0 голосов
/ 09 июля 2019

Это решится за 3 шага.1: _ Откройте файл build.gradle (Module: app).Добавьте это под тегом приложения

defaultConfig {
multiDexEnabled true
}

2: _ Если вы используете appcompact, добавьте эту строку под тегом зависимостей

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

, в противном случае, если вы перенесете свой проект в AndroidX, добавьте этострока

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

3: _ Откройте все свои Java-файлы активности и добавьте MultiDex.intall (contextName)

protected void onCreate(Bundle savedInstanceState) {
MultiDex.install(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mine);
        `enter code here`
}
...