簡體   English   中英

警報通知不適用於 API>=26 android 仿真器

[英]Alarm notification is not working for API>=26 android emulators

我正在嘗試發送顯示在頂部導航欄下方的通知,如下所示:

在此處輸入圖像描述

My codes work for android emulator with API < 26, but they do not work for android emulator with API >= 26. I found that it is because I need to add channel, so I did. 但是,盡管代碼編譯良好並且 go 通過所有循環,並且logcat沒有錯誤。 盡管如此,通知並未出現在屏幕上。

任何幫助將不勝感激。 僅供參考,這是我的FragmentAlarm.java

package com.example.dailybible3;

import android.app.AlarmManager;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;

import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;

import java.util.Calendar;

public class FragmentAlarm extends Fragment {
    private View view;
    private CheckBox box_sun, box_mon, box_tue, box_wed, box_thu, box_fri, box_sat;
    private CheckBox order_history, order_bible;
    private CheckBox ninety_days, one_year;
    private Button btn_save;

    public static FragmentAlarm newInstance() {
        FragmentAlarm fragmentAlarm = new FragmentAlarm();
        return fragmentAlarm;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_alarm, container, false);

        /* start of set notification */
        createNotificationChannel();

        /* end of set notification */

        //save button
        btn_save = (Button) view.findViewById(R.id.save_button);
        btn_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = "This is a notificaiton example";
                NotificationCompat.Builder builder = new NotificationCompat.Builder(
                        getContext(), "notifyBibleVerse"
                )
                        .setSmallIcon(R.drawable.ic_bible_english)
                        .setContentTitle("Today's Verse")
                        .setContentText("Genesis 1 - 3")
                        .setPriority(NotificationCompat.PRIORITY_DEFAULT);

                /* start of setting notification */
                Intent intent = new Intent(getActivity(), MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("message", message);

                PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                builder.setContentIntent(pendingIntent);

                NotificationManager notiifcationManager = (NotificationManager) getActivity().getSystemService(
                  Context.NOTIFICATION_SERVICE
                );
                notiifcationManager.notify(0, builder.build());

                toastMessage("Alarm is set!");
            }
        });

        return view;
    }

    private void createNotificationChannel() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            CharSequence name = "DailyBibleChannel";
            String description = "Channel for Bible Verse Reminder";
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel channel = new NotificationChannel("notifyBibleVerse", name, importance);
            channel.setDescription(description);
        }
    }

    private void toastMessage(String message){
        Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
    }
}

我仍然不確定如何解決上述問題,但我從這里找到了工作代碼: https://codinginflow.com/tutorials/android/alarmmanager 我看到的主要區別是工作代碼有 AlarmManager。 希望這對設置通知有困難的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM