Android实现消息通知的点击跳转查看,编写完整代码
时间: 2024-02-24 08:53:37 浏览: 56
以下是一个完整的 Android 实现消息通知的点击跳转查看的代码示例:
1. MainActivity.java
```java
public class MainActivity extends AppCompatActivity {
private static final String CHANNEL_ID = "my_channel";
private static final int NOTIFICATION_ID = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createNotificationChannel();
// 创建一个 Intent
Intent intent = new Intent(this, DetailActivity.class);
intent.putExtra("message", "Hello World!");
// 创建 PendingIntent
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// 创建通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("My notification")
.setContentText("Hello World!")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent) // 设置 PendingIntent
.setAutoCancel(true);
// 显示通知
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFICATION_ID, builder.build());
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
}
```
在上述代码中,我们创建了一个 NotificationCompat.Builder 对象,并将其与一个 PendingIntent 关联。当用户点击通知时,该 PendingIntent 会启动 DetailActivity,并传递了一个额外的字符串信息 "Hello World!"。
2. DetailActivity.java
```java
public class DetailActivity extends AppCompatActivity {
private TextView textViewMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
textViewMessage = findViewById(R.id.textViewMessage);
// 获取传递的额外信息
Bundle extras = getIntent().getExtras();
if (extras != null) {
String message = extras.getString("message");
textViewMessage.setText(message);
}
}
}
```
在 DetailActivity 中,我们通过 getIntent().getExtras() 方法获取传递的额外信息,并更新了 UI。在这个例子中,我们将字符串信息显示在了一个 TextView 控件中。
3. activity_main.xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Click the notification to see the detail"
android:textSize="20sp"
android:gravity="center"/>
</LinearLayout>
```
4. activity_detail.xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".DetailActivity">
<TextView
android:id="@+id/textViewMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:gravity="center"/>
</LinearLayout>
```
以上就是一个完整的 Android 实现消息通知的点击跳转查看的代码示例。注意,为了确保 PendingIntent 能够正确启动指定的 Activity,并传递额外的信息,我们需要在 AndroidManifest.xml 文件中为 Activity 添加相应的声明和 Intent Filter。