📜  Android 通知功能示例(1)

📅  最后修改于: 2023-12-03 15:29:22.373000             🧑  作者: Mango

Android 通知功能示例

在 Android 应用中,通知功能可以是一个非常有用的工具,它可以帮助应用向用户发送各种信息和提醒,甚至可以在用户离开应用后继续向其发送提醒。在本篇文章中,我们将介绍 Android 应用中通知功能的实现方法,并提供一个通知功能的示例供程序员参考。

实现方法

Android 中通知功能的实现需要用到 NotificationManager 和 NotificationCompat 两个类。NotificationManager 负责发送通知消息,而 NotificationCompat 则是用于构建通知消息的工具类。下面是构建一个简单通知功能的代码示例:

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.media.RingtoneManager;
import android.net.Uri;
import androidx.core.app.NotificationCompat;

public class NotificationUtils {

    public static void createNotification(Context context, String title, String message, Class<?> activity) {
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        int notificationId = 1;
        String channelId = "channel-01";
        String channelName = "Channel Name";
        int importance = NotificationManager.IMPORTANCE_HIGH;

        Intent intent = new Intent(context, activity);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher_round))
                .setContentTitle(title)
                .setContentText(message)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
            NotificationChannel mChannel = new NotificationChannel(
                channelId, channelName, importance);
            notificationManager.createNotificationChannel(mChannel);
        }

        notificationManager.notify(notificationId, builder.build());
    }

}

上述代码中,我们首先获取了 NotificationManager 的实例,然后创建了一个通知消息。我们使用 NotificationCompat.Builder 来构建通知消息,并设置了通知的标题、内容、小图标、大图标、声音和点击行为等属性。PendingIntent.getActivity() 用于从通知消息中启动目标 Activity。如果您需要创建一个带有自定义视图的通知消息,还可以使用 NotificationCompat.BuildersetCustomContentView()setCustomBigContentView() 方法来实现。

示例

接下来,我们将基于上述实现方法编写一个简单的通知功能示例。该示例可以在用户离开应用时向其发送一条通知消息,并在用户点击通知消息时返回应用。下面是示例代码:

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button mSendButton;
    private EditText mMessageEditText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSendButton = findViewById(R.id.send_button);
        mMessageEditText = findViewById(R.id.message_edit_text);

        mSendButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String message = mMessageEditText.getText().toString();
                if (!message.isEmpty()) {
                    NotificationUtils.createNotification(MainActivity.this, "New message", message, MainActivity.class);
                    Toast.makeText(MainActivity.this, "Message sent", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

}

上述示例代码中,我们在 MainActivity 中定义了一个 EditText 和一个 Button 用于发送通知消息。当用户点击发送按钮时,我们获取用户输入的消息,并使用 NotificationUtils.createNotification() 方法创建一条通知消息。该方法会在用户离开应用时向其发送一条通知消息,并在用户点击通知消息时返回应用。注意,在使用通知功能时,您需要在 AndroidManifest.xml 文件中声明通知权限:

<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

至此,我们已经完成了 Android 应用中通知功能的实现,并提供了一个通知功能的示例供程序员参考。使用通知功能可以帮助您向用户发送各种信息和提醒,从而增强应用的交互性、用户体验和用户参与度。