Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使应用程序已关闭,如何像真正的呼叫者一样显示警报?_Java_Android_Firebase_Firebase Cloud Messaging - Fatal编程技术网

Java 即使应用程序已关闭,如何像真正的呼叫者一样显示警报?

Java 即使应用程序已关闭,如何像真正的呼叫者一样显示警报?,java,android,firebase,firebase-cloud-messaging,Java,Android,Firebase,Firebase Cloud Messaging,我正在开发一个SOS应用程序 当Android应用程序收到通知时,我想打开一个警报弹出窗口,其中会显示发送者和SOS图标的一些详细信息,并且会响起持续的警报音 我是通过使用下面的代码来实现的,但是在android 9上,活动并没有启动。当应用程序处于终止状态且不在后台模式下工作时,此代码不会启动活动 private void sendNotification(String messageBody, String notificationType, String notificationId) {

我正在开发一个SOS应用程序

当Android应用程序收到通知时,我想打开一个警报弹出窗口,其中会显示发送者和SOS图标的一些详细信息,并且会响起持续的警报音

我是通过使用下面的代码来实现的,但是在android 9上,活动并没有启动。当应用程序处于终止状态且不在后台模式下工作时,此代码不会启动活动

private void sendNotification(String messageBody, String notificationType, String notificationId) {       

    try {
        Intent intent = new Intent(this, SosPopUpActivity.class);

        intent.putExtra("message", messageBody);
        intent.putExtra("notification_type", notificationType);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

        NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationChannel mChannel = new NotificationChannel(
                    channelId, channelName, importance);
            notificationManager.createNotificationChannel(mChannel);
        }


        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        //  NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
                .setSmallIcon(R.drawable.ic_notification)
                .setLargeIcon(BitmapFactory.decodeResource(this.getResources(), R.mipmap.ic_launcher))
                .setContentTitle(getString(R.string.app_name))
                .setStyle(new NotificationCompat.BigTextStyle().bigText(messageBody))
                .setContentText(messageBody)
                .setAutoCancel(false)
                .setSound(Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + getApplicationContext().getPackageName() + "/" + R.raw.sos))

                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);


        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            notificationBuilder.setSmallIcon(R.drawable.ic_notification);
            notificationBuilder.setColor(getResources().getColor(R.color.colorPrimary));
            //notificationBuilder.setColor(getResources().getColor(R.color.notification_color));
        } else {
            notificationBuilder.setSmallIcon(R.drawable.ic_notification);
        }

        notificationBuilder.setPriority(NotificationCompat.PRIORITY_HIGH);

        //  NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        // notificationManager.notify(1234, notificationBuilder.build());

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addNextIntent(intent);
        PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                0,
                PendingIntent.FLAG_UPDATE_CURRENT
        );
        notificationBuilder.setContentIntent(resultPendingIntent);

        notificationManager.notify(1234, notificationBuilder.build());

        startActivity(intent);
    }catch (Exception e)
    {
        e.printStackTrace();
        AlertDialogHelper.showAlertDialog(this,e.getLocalizedMessage());
    }

}

如果应用程序崩溃,则会出现堆栈跟踪。请在logcat上查找,并将其添加到您的问题中。没有崩溃日志活动不启动当您通过“并且此代码在应用程序被终止时不启动活动”表示什么意思时?当应用程序被终止时,不在前台,也不在bacground模式下,它不工作@Alexmamoi如果应用程序崩溃,会出现堆栈跟踪。请在logcat上查找,并将其添加到您的问题中。没有崩溃日志活动不启动当您通过“并且此代码在应用程序被终止时不启动活动”表示什么意思时?当应用程序被终止时,不在前台,也不在bacground模式下,它不工作@阿列克斯马莫