网站如何添加关键词,html简单网页代码如何运行,做网站 就上微赞网,来宾绍兴seo网站托管方案Android开发应用如何开启任务栏消息通知 1. 获取通知权限2.编写通知工具类3. 进行任务栏消息通知 1. 获取通知权限
在 AndroidManifest.xml 里加上权限配置#xff0c;如下。
?xml version1.0 encodingutf-8?
manifest xmlns:android… Android开发应用如何开启任务栏消息通知 1. 获取通知权限2.编写通知工具类3. 进行任务栏消息通知 1. 获取通知权限
在 AndroidManifest.xml 里加上权限配置如下。
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/tools!-- 权限配置 --!-- 通知栏信息权限 --uses-permission android:nameandroid.permission.POST_NOTIFICATIONS /!-- 下面是application配置 --/manifest可以在任意活动类中检查并申请相关权限
import android.content.pm.PackageManager;
import android.Manifest;
import android.os.Build;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Toast;import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;import com.example.sda.R;/*** author pengYuJun*/
public class MainActivity extends AppCompatActivity {/*** 通知权限自定义编码*/private static final int NOTIFICATION_PERMISSION_CODE 1;Overrideprotected void onCreate(Bundle savedInstanceState) {// 调用父类的 onCreate 方法以确保正确初始化活动super.onCreate(savedInstanceState);// 设置页面布局配置setContentView(R.layout.activity_main);// 检查权限并申请if (Build.VERSION.SDK_INT Build.VERSION_CODES.TIRAMISU) {checkPermission();}}/*** 检查并请求所需权限*/RequiresApi(api Build.VERSION_CODES.TIRAMISU)private void checkPermission(){// 检查通知权限if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) ! PackageManager.PERMISSION_GRANTED) {// 请求权限ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.POST_NOTIFICATIONS}, NOTIFICATION_PERMISSION_CODE);}}/*** 权限请求结果返回*/Overridepublic void onRequestPermissionsResult(int requestCode, NonNull String[] permissions, NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (grantResults.length 0){return;}if (requestCode NOTIFICATION_PERMISSION_CODE) {if (grantResults[0] ! PackageManager.PERMISSION_GRANTED) {// 权限被拒绝显示提示信息Toast.makeText(this, 申请通知权限被拒绝, Toast.LENGTH_SHORT).show();}}}
}2.编写通知工具类
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Build;import androidx.core.app.NotificationCompat;import com.example.sda.R;
import com.example.sda.activity.MainActivity;/*** author pengYuJun*/
public class NotificationUtils {public static void showNotification(Context context, String title, String content) {NotificationManager manager (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);String channelId context.getResources().getString(R.string.app_name);String channelName context.getResources().getString(R.string.app_name);// 创建通知渠道仅在 API 级别 26 及更高版本中需要if (Build.VERSION.SDK_INT Build.VERSION_CODES.O) {NotificationChannel channel new NotificationChannel(channelId,channelName,NotificationManager.IMPORTANCE_HIGH // 使用高重要性);// 注册渠道manager.createNotificationChannel(channel);}// 通知点击的跳转页面Intent intentTarget new Intent(context.getApplicationContext(), MainActivity.class);intentTarget.putExtra(xxx,xxx);intentTarget.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);PendingIntent pendingIntent PendingIntent.getActivity(context, 1, intentTarget, PendingIntent.FLAG_IMMUTABLE);// 创建通知Notification notification new NotificationCompat.Builder(context, channelId).setContentTitle(title).setContentText(content).setContentIntent(pendingIntent).setWhen(System.currentTimeMillis()).setSmallIcon(R.drawable.icon_app).setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_app)).setAutoCancel(true).setDefaults(Notification.DEFAULT_ALL).setPriority(NotificationCompat.PRIORITY_HIGH) // 使用高优先级.build();// 获取当前时间戳毫秒作为通知Idlong currentTimeMillis System.currentTimeMillis();// 将时间戳转换为 int 类型int notifyId (int) (currentTimeMillis % Integer.MAX_VALUE);// 发送通知manager.notify(notifyId, notification);}
}注意当版本高时创建通知渠道需要使用高重要性 NotificationManager.IMPORTANCE_HIGH这样通知会弹出悬挂横幅弹窗。若版本低时则需要高优先级setPriority(NotificationCompat.PRIORITY_HIGH)。当不需要弹出悬挂横幅弹窗时默认重要性、默认优先级即可。
再注意每次改变重要性、优先级这些需要卸载app再重新安装才能生效。至少在笔者2025/2/7开发时为如此。
其他配置可自行根据需求探索。
3. 进行任务栏消息通知
NotificationUtils.showNotification(getApplicationContext(), title, message);