TEL:400-8793-956
当前位置:程序、服务器

如何在Android中使用类发送通知?

提问者: 近期获赞: 浏览人数: 发布时间:2021-02-03 15:02:04

 问:我想创建一个库来向我的android应用程序发送通知,但是我不知道它是如何工作的,以及我应该为该类中的函数提供什么样的数据。这是我发送通知的代码,但我不知道如何将其放入类中以在应用程序的另一部分中使用。

 
该代码可在MainActivity中使用
 
Intent intent = new Intent(context, MainActivity.class);
                PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
                NotificationCompat.Builder b = new NotificationCompat.Builder(context);
                b.setAutoCancel(true)
                        .setDefaults(Notification.DEFAULT_ALL)
                        .setWhen(System.currentTimeMillis())
                        .setSmallIcon(R.drawable.ic_launcher_background)
                        .setTicker("Hearty365")
                        .setContentTitle("Default notification")
                        .setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
                        .setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND)
                        .setContentIntent(contentIntent)
                        .setContentInfo("Info");
                NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
                notificationManager.notify(1, b.build());
 
 
答:您可以使用和NotificationCompact构建器为您的android应用程序创建通知。如果您想显示Firebase推送通知
NotificationCompat.Builder builder = null;
final int NOTIFY_ID = 0; // ID of notification
String id = "mychannel"; // default_channel_id
 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
        PendingIntent.FLAG_ONE_SHOT);
 
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
 
if (notifManager == null) {
    notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    int importance = NotificationManager.IMPORTANCE_HIGH;
    NotificationChannel mChannel = notifManager.getNotificationChannel(id);
    if (mChannel == null) {
        mChannel = new NotificationChannel(id, title, importance);
        mChannel.enableVibration(true);
        mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
        notifManager.createNotificationChannel(mChannel);
    }
    builder = new NotificationCompat.Builder(context, id)
            .setContentTitle(title)
            .setContentText(desciption)
            .setContentIntent(pendingIntent)
            .setSound(defaultSoundUri)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
            .setSmallIcon(R.mipmap.ic_launcher)
            .setPriority(NotificationCompat.PRIORITY_DEFAULT);
} else {
    builder = new NotificationCompat.Builder(context, id);
    intent = new Intent(context, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    builder.setContentTitle(title)
            .setContentText(desciption)                            // required
            .setSmallIcon(android.R.drawable.ic_popup_reminder)   // required
            .setDefaults(Notification.DEFAULT_ALL)
            .setAutoCancel(true)
            .setContentIntent(pendingIntent)
            .setTicker("Accept your request")
            .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400})
            .setPriority(Notification.PRIORITY_HIGH);
}
Notification notification = builder.build();
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFY_ID, notification);
 
@harikrishna
一年多以前
 
0
 
0
 
0
 
0
 
0
public class MainActivity extends ActionBarActivity {
   EditText ed1,ed2,ed3;
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
 
      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);
      Button b1=(Button)findViewById(R.id.button);
 
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String tittle=ed1.getText().toString().trim();
            String subject=ed2.getText().toString().trim();
            String body=ed3.getText().toString().trim();
 
            NotificationManager notif=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
            Notification notify=new Notification.Builder
               (getApplicationContext()).setContentTitle(tittle).setContentText(body).
               setContentTitle(subject).setSmallIcon(R.drawable.abc).build();
                
               notify.flags |= Notification.FLAG_AUTO_CANCEL;
               notif.notify(0, notify);
         }
      });
   }
}
Android 为此提供了 NotificationManager类。为了使用此类,您需要通过getSystemService()方法请求android系统来实例化此类的对象 。
上一篇: 如何开始开发Web应用程序?
下一篇: 用HTML仅输入数字的不同方法是什么