相容 android 8.0 通知
阿新 • • 發佈:2018-11-16
import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; import android.graphics.BitmapFactory; import android.os.Build; import android.support.annotation.RequiresApi; import android.support.v4.app.NotificationCompat; import com.douziit.locator.R; import com.douziit.locator.activity.personalcenter.AlarmPushActivity; import java.util.Date; /** * 相容 android 8.0 通知 */ public class NotificationUtils extends ContextWrapper { private NotificationManager manager; public static final String id = "channel_MiWa_Id"; public static final String name = "channel_MiWa_Name"; private PendingIntent pendingIntent; public NotificationUtils(Context context){ super(context); //點選通知響應事件 pendingIntent = PendingIntent.getActivity(getApplicationContext(), 100, new Intent(getApplicationContext(), AlarmPushActivity.class), PendingIntent.FLAG_CANCEL_CURRENT); } @RequiresApi(api = Build.VERSION_CODES.O) public void createNotificationChannel(){ NotificationChannel channel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH); getManager().createNotificationChannel(channel); } private NotificationManager getManager(){ if (manager == null){ manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); } return manager; } @RequiresApi(api = Build.VERSION_CODES.O) public Notification.Builder getChannelNotification(String title, String content){ return new Notification.Builder(getApplicationContext(), id) .setTicker("您有新的警報資訊,請注意檢視") .setContentTitle(title) .setContentText(Utils.GetMMddHHmmss(new Date())) .setSubText(content) .setSmallIcon(R.mipmap.icon) .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.icon)) .setAutoCancel(true) .setWhen(System.currentTimeMillis()) .setVisibility(Notification.VISIBILITY_PUBLIC) .setContentIntent(pendingIntent); } public NotificationCompat.Builder getNotification_25(String title, String content){ return new NotificationCompat.Builder(getApplicationContext()) .setTicker("您有新的警報資訊,請注意檢視") .setContentTitle(title) .setContentText(Utils.GetMMddHHmmss(new Date())) .setSubText(content) .setSmallIcon(R.mipmap.icon) .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.icon)) .setAutoCancel(true) .setWhen(System.currentTimeMillis()) .setVisibility(Notification.VISIBILITY_PUBLIC) .setContentIntent(pendingIntent); } public void sendNotification(int id, String title, String content){ if (Build.VERSION.SDK_INT>=26){ createNotificationChannel(); Notification notification = getChannelNotification(title, content).build(); getManager().notify(id,notification); }else{ Notification notification = getNotification_25(title, content).build(); getManager().notify(id,notification); } } }