如何设置通知。?

问题描述 投票:-1回答:1

我正在尝试设置通知。所有代码都可以正常工作。但是我不能添加want。我想在通知到来时发出声音/振动,并且通知按钮徽标也会更改。谁能帮我设置通知。这对我来说非常重要。我正在尝试,但无法正常工作。

所有这些代码都可以正常工作。没错当我去通知活动时,它会显示所有通知。它的工作正常,但没有声音/振动? ....................]

请帮助我..........

 package com.example.mfree.Fragment;
    import android.os.Bundle;
    import androidx.annotation.NonNull;
    import androidx.fragment.app.Fragment;
    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import com.example.mfree.Adapter.NotificationAdapter;
    import com.example.mfree.Model.Notification;
    import com.example.mfree.R;
    import com.google.firebase.auth.FirebaseAuth;
    import com.google.firebase.auth.FirebaseUser;
    import com.google.firebase.database.DataSnapshot;
    import com.google.firebase.database.DatabaseError;
    import com.google.firebase.database.DatabaseReference;
    import com.google.firebase.database.FirebaseDatabase;
    import com.google.firebase.database.ValueEventListener;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;

    /**
     * A simple {@link Fragment} subclass.
     */
    public class NotificationFragment extends Fragment {

        private RecyclerView recyclerView;
        NotificationAdapter notificationAdapter;
        private List<Notification>notificationList;




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

            recyclerView=view.findViewById(R.id.recyler_view);
            recyclerView.setHasFixedSize(true);

            LinearLayoutManager layoutManager=new LinearLayoutManager(getContext());
            recyclerView.setLayoutManager(layoutManager);
            notificationList=new ArrayList<>();
            notificationAdapter=new NotificationAdapter(getContext(),notificationList);
            recyclerView.setAdapter(notificationAdapter);
            readNotification();



            return view;
        }

        private void readNotification() {

            FirebaseUser firebaseUser= FirebaseAuth.getInstance().getCurrentUser();
            DatabaseReference reference= FirebaseDatabase.getInstance().getReference("Notifications").child(firebaseUser.getUid());

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    notificationList.clear();
                    for (DataSnapshot snapshot : dataSnapshot.getChildren())
                    {
                        Notification notification=snapshot.getValue(Notification.class);
                        notificationList.add(notification);


                    }
                    Collections.reverse(notificationList);
                    notificationAdapter.notifyDataSetChanged();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

        }

    }






**NotificationAdapter**


package com.example.mfree.Adapter;

import android.content.Context;
import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.example.mfree.Fragment.PostDetailsFragment;
import com.example.mfree.Fragment.ProfileFragment;
import com.example.mfree.Model.Notification;
import com.example.mfree.Model.Post;
import com.example.mfree.Model.User;
import com.example.mfree.R;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.List;

public class NotificationAdapter extends RecyclerView.Adapter<NotificationAdapter.ViewHolder>{

    private Context mContext;
    private List<Notification>mNotification;

    public NotificationAdapter(Context mContext, List<Notification> mNotification) {
        this.mContext = mContext;
        this.mNotification = mNotification;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(mContext).inflate(R.layout.notification_item,parent,false);
        return new NotificationAdapter.ViewHolder(view);
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        final Notification notification=mNotification.get(position);
        holder.text.setText(notification.getText());
        getUserInfo(holder.image_profile,holder.username,notification.getUserid());
        if (notification.isIspost()){
            holder.post_image.setVisibility(View.VISIBLE);
            getPostImage(holder.post_image,notification.getPostid());
        }else {
            holder.post_image.setVisibility(View.GONE);
        }
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(notification.isIspost()){
                    SharedPreferences.Editor editor=mContext.getSharedPreferences("PREFS",Context.MODE_PRIVATE).edit();
                    editor.putString("postid",notification.getPostid());
                    editor.apply();
                    ((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container
                    ,new PostDetailsFragment()).commit();

                }else {
                    SharedPreferences.Editor editor=mContext.getSharedPreferences("PREFS",Context.MODE_PRIVATE).edit();
                    editor.putString("profileid",notification.getUserid());
                    editor.apply();
                    ((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container
                            ,new ProfileFragment()).commit();
                }
            }
        });

    }

    @Override
    public int getItemCount() {
        return mNotification.size();
    }

    public class  ViewHolder extends RecyclerView.ViewHolder {

        public ImageView image_profile,post_image;

        TextView username,text;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            image_profile=itemView.findViewById(R.id.image_profile);
            post_image=itemView.findViewById(R.id.image_post);
            username=itemView.findViewById(R.id.username);
            text=itemView.findViewById(R.id.comment);
        }
    }
    private  void getUserInfo (final ImageView imageView, final TextView username, String publisherid){
        DatabaseReference reference= FirebaseDatabase.getInstance().getReference("Users").child(publisherid);
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                try{
                    User user=dataSnapshot.getValue(User.class);
                   Glide.with(mContext.getApplicationContext()).load(user.getImageurl()).into(imageView);
                    username.setText(user.getUsername());
                }catch (Exception e)
                {
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
    }
    private  void getPostImage(final ImageView imageView, String postid){
        DatabaseReference reference=FirebaseDatabase.getInstance().getReference("posts").child(postid);
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                try {
                    Post post=dataSnapshot.getValue(Post.class);
                    Glide.with(mContext.getApplicationContext()).load(post.getPostimage()).into(imageView);
                }catch (Exception e){
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

    }

}
java android push-notification notifications android-notifications
1个回答
0
投票

[如果您要制作的是应用内通知系统,则可以尝试使用RingtoneManagerRingtone类以自己的方式振铃:

        // to play sound for your custom notification on its arrival
        Uri notificationToneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone notificationTone = RingtoneManager.getRingtone(this, notificationToneUri);
        notificationTone.play();

        //to stop
        notificationTone.stop();

See this link for vibration

© www.soinside.com 2019 - 2024. All rights reserved.