Android8.0相容性Notification
阿新 • • 發佈:2018-11-08
NotificationUtils:
import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.content.Context; import android.content.ContextWrapper; import android.os.Build; import android.support.v4.app.NotificationCompat; /** * Created by Cjz on 2018/9/15. */ public class NotificationUtils extends ContextWrapper { private NotificationManager manager; public static final String id = "Notification_Channel"; public static final String name = "Notification_Name"; public NotificationUtils(Context context){ super(context); } 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; } public Notification.Builder getChannelNotification(String title, String content){ return new Notification.Builder(getApplicationContext(), id) .setContentTitle(title) .setContentText(content) .setSmallIcon(android.R.drawable.stat_notify_more) .setAutoCancel(true); } public NotificationCompat.Builder getNotification_25(String title, String content){ return new NotificationCompat.Builder(getApplicationContext()) .setContentTitle(title) .setContentText(content) .setSmallIcon(android.R.drawable.stat_notify_more) .setAutoCancel(true); } public void sendNotification(String title, String content){ if (Build.VERSION.SDK_INT>=26){ createNotificationChannel(); Notification notification = getChannelNotification (title, content).build(); getManager().notify(1,notification); }else{ Notification notification = getNotification_25(title, content).build(); getManager().notify(1,notification); } } }
MainActivity:
import android.app.NotificationManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private NotificationManager mManager; private Button mSend; private NotificationUtils notificationUtils; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSend = findViewById(R.id.send_notification); mSend.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.send_notice: NotificationUtils notificationUtils = new NotificationUtils(this); notificationUtils.sendNotification("This is content title", "This is content text"); } } }
佈局檔案activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/send_notification" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Send Notification"/> </LinearLayout>