Tính năng Notification Channels trên Android 8.0
Notification Channels mang đến cho chúng ta khả năng nhóm các Notification mà ứng dụng của chúng ta gửi đến vào các Group để quản lý. Khi thông báo của chúng ta có trong các kênh này , người dùng phải quản lý chúng. Theo các tùy chọn sau : Hình bên trái , bạn có thể thấy các settings có thể ...
Notification Channels mang đến cho chúng ta khả năng nhóm các Notification mà ứng dụng của chúng ta gửi đến vào các Group để quản lý. Khi thông báo của chúng ta có trong các kênh này , người dùng phải quản lý chúng. Theo các tùy chọn sau :
- Hình bên trái , bạn có thể thấy các settings có thể thực hiện như
- Chặn tất cả notifications : Điều này có nghĩa là các notification từ ứng dụng của chúng ta sẽ không được hiển thị
- Show badge : Cho phép hiển thị Badge hay không
- Và tùy chọn thứ 3 là cấu hình riêng những tính năng cho các danh mục
Từ phiên bản Android Oreo (API Level 26) trở lên , bạn cần phải thực hiện việc thiết đặt tính năng Notification Channel System thì mới có thể hiển thị Notification System lên ứng dụng , trong bài viết này , tôi sẽ hướng dẫn các bạn cách làm
- Tạo lớp NotificationHelper
package edmt.dev.androidnotificationchannel; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.content.Context; import android.content.ContextWrapper; import android.graphics.Color; /** * Created by eddydn on 10/13/2017. */ public class NotificationHelper extends ContextWrapper { private static final String EDMT_CHANNEL_ID = "edmt.dev.androidnotificationchannel.EDMTDEV"; private static final String EDMT_CHANNEL_NAME = "EDMTDEV Channel"; private NotificationManager manager; public NotificationHelper(Context base) { super(base); createChannels(); } private void createChannels() { //IMPORTANCE_DEFAULT = show everywhere , make noise , but don't visually intrude //IMPORTANCE_HIGH : show everywhere , make noise and peeks //IMPORTANCE_LOW : show everywhere , but isn't intrusive //IMPORTANCE_MIN: only show in the shade , below the fold //IMPORTANCE_NONE : a notification with no importance , don't show in the shade NotificationChannel edmtChannel = new NotificationChannel(EDMT_CHANNEL_ID,EDMT_CHANNEL_NAME,NotificationManager.IMPORTANCE_DEFAULT); edmtChannel.enableLights(true); edmtChannel.enableVibration(true); edmtChannel.setLightColor(Color.GREEN); edmtChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); getManager().createNotificationChannel(edmtChannel); } public NotificationManager getManager() { if(manager == null) manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); return manager; } public Notification.Builder getEDMTChannelNotification(String title,String body) { return new Notification.Builder(getApplicationContext(),EDMT_CHANNEL_ID) .setContentText(body) .setContentTitle(title) .setSmallIcon(R.mipmap.ic_launcher_round) .setAutoCancel(true); } }
- Tạo giao diện activity_main
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_awidth="match_parent" android:layout_height="match_parent" tools:context="edmt.dev.androidnotificationchannel.MainActivity"> <LinearLayout android:orientation="vertical" android:layout_centerInParent="true" android:layout_awidth="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" > <EditText android:id="@+id/edtTitle" android:hint="Title" android:inputType="text" android:layout_awidth="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/edtContent" android:hint="Content" android:inputType="text" android:layout_awidth="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btnSend" android:text="SEND NOTIFICATION" android:layout_awidth="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout>
- Code MainACtivity
public class MainActivity extends AppCompatActivity { NotificationHelper helper; Button btnSend; EditText edtTitle,edtContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper = new NotificationHelper(this); edtTitle = (EditText)findViewById(R.id.edtTitle); edtContent = (EditText)findViewById(R.id.edtContent); btnSend = (Button)findViewById(R.id.btnSend); btnSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String title = edtTitle.getText().toString(); String content = edtContent.getText().toString(); Notification.Builder builder = helper.getEDMTChannelNotification(title,content); helper.getManager().notify(new Random().nextInt(),builder.build()); } }); } }
Và kết quả
Chúc các bạn thành công