private void showNotification() { Intent intent = new Intent(this, MainActivity.class); NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(this); mBuilder.setSmallIcon(R.drawable.air) .setContentTitle("content title") .setContentText("content text") .setContentInfo("content info") .setContentIntent(PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT)); mBuilder.setDefaults(Notification.DEFAULT_ALL);// Notification notification = mBuilder.build();//4.1.build(); notification.flags |= Notification.FLAG_AUTO_CANCEL;// cancel manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); manager.notify(notification_id,notification); startForeground(notification_id,notification); }
public class MainActivity extends AppCompatActivity { private Button send; private Button cancle; NotificationManager manager; int notification_id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); send = (Button) findViewById(R.id.send); cancle = (Button) findViewById(R.id.cancle); manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, MessageActivity.class); NotificationCompat.Builder mBuilder=new NotificationCompat.Builder(MainActivity.this); mBuilder.setSmallIcon(R.drawable.air) .setContentTitle("content title") .setContentText("content text") .setContentInfo("content info"); // .setContentIntent(PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT)); //Builder TaskStackBuilder stackBuilder=TaskStackBuilder.create(MainActivity.this); stackBuilder.addParentStack(MessageActivity.class); stackBuilder.addNextIntent(intent); PendingIntent pendingIntent=stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); mBuilder.setContentIntent(pendingIntent); mBuilder.setDefaults(Notification.DEFAULT_ALL);// Notification notification = mBuilder.build();//4.1.build(); notification.flags |= Notification.FLAG_AUTO_CANCEL;// cancel manager.notify(notification_id,notification); } }); cancle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { manager.cancel(notification_id); } }); } }
MessageActivity是一个空Activity
然后配置AndroidManifest,给MessageActivity设置parentActivityName
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MessageActivity" android:parentActivityName=".MainActivity"> </activity>
文章来源: Notification与前台service