Я пытаюсь настроить уведомление, но не могу добавить то, что хочу: я бы хотел, чтобы уведомление шло со звуком / вибрацией, меняя также кнопку уведомления lo go.
Может ли кто-нибудь помочь мне настроить уведомление? Я пытаюсь, но это не работает.
Код ниже работает нормально: ошибок нет. Отображаются все уведомления, но без звука / вибрации.
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) {
}
});
}
}