Android Studio App设置Notification通知

1.在maniactivity.java文件里添加:

NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);//NotificationManager实例对通知进行管理
Notification notification=new Notification(R.drawable.ic_launcher,"通知",System.currentTimeMillis());//创建Notification对象
notification.setLatestEventInfo(this, "通知标题", "通知内容",null);
//Uri soundUri=Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
//notification.sound=soundUri;
notification.ledARGB=Color.GREEN;//控制通知的led灯颜色
notification.ledOnMS=1000;//通知灯的显示时间
notification.ledOffMS=1000;
notification.flags=Notification.FLAG_SHOW_LIGHTS;
manager.notify(1,notification);//调用NotificationManager的notify方法使通知显示

2.在drawable文件夹里添加通知的图标ic_launcher.png图片



整个maniactivity.java内容如下:

package com.example.notification;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import java.io.File;

public class MainActivity extends Activity implements OnClickListener {
    private Button sendNotice_button;
    private Button button2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sendNotice_button=(Button)findViewById(R.id.send_notice);
        sendNotice_button.setOnClickListener(this);
    }
    public void onClick(View v)
    {
        switch (v.getId())
        {
            case R.id.send_notice:
                NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);//NotificationManager实例对通知进行管理
                Notification notification=new Notification(R.drawable.ic_launcher,"通知",System.currentTimeMillis());//创建Notification对象
                notification.setLatestEventInfo(this, "通知标题", "通知内容",null);
                //Uri soundUri=Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
                //notification.sound=soundUri;
                notification.ledARGB=Color.GREEN;//控制通知的led灯颜色
                notification.ledOnMS=1000;//通知灯的显示时间
                notification.ledOffMS=1000;
                notification.flags=Notification.FLAG_SHOW_LIGHTS;
                manager.notify(1,notification);//调用NotificationManager的notify方法使通知显示
                break;
            default:
                break;
        }
        return;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
Layout文件夹activity_main.xml文件内容如下:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    <TableRow>
        <Button
            android:id="@+id/send_notice"
            android:text="发送通知"
            android:layout_height="wrap_content" />
        </TableRow>
</TableLayout>

运行效果如下,界面左上角就是通知:



### Android Studio 中实现应用通知功能 要在 Android 应用程序中实现通知功能,可以按照以下方法完成。以下是关于如何通过 `NotificationManager` 和 `PendingIntent` 来构建并发送通知的具体说明。 #### 创建通知渠道 从 Android Oreo 开始,应用程序必须为每条通知指定一个通知渠道。因此,在创建通知之前,需要先定义一个通知渠道: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { CharSequence name = "ChannelName"; String description = "ChannelDescription"; int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel("channel_id", name, importance); channel.setDescription(description); // 注册通道到系统服务 NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); } ``` 此代码片段用于在支持的通知管理器中注册一个新的通知频道[^1]。 #### 构建通知对象 接着,可以通过 `NotificationCompat.Builder` 类来构建实际的通知内容: ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "channel_id") .setSmallIcon(R.drawable.ic_notification) .setContentTitle("Your Title Here") .setContentText("Your Content Text Here") .setPriority(NotificationCompat.PRIORITY_DEFAULT); ``` 上述代码设置通知的小图标、标题以及正文文本等内容属性[^2]。 #### 设置点击行为 为了使用户能够交互式地响应通知,通常会附加一个待定意图 (`PendingIntent`) 到该通知上。这允许当用户点击通知时触发某些操作,比如打开特定活动页面或者执行其他逻辑处理: ```java Intent intent = new Intent(context, TargetActivity.class); PendingIntent pendingIntent; // 需要根据不同 SDK 版本设置不同的 flag 值以避免崩溃问题 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); } else { pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } builder.setContentIntent(pendingIntent).setAutoCancel(true); ``` 这里展示了如何依据设备运行的操作系统的 API 级别差异调整标志位的选择策略,从而确保兼容性和稳定性[^3]。 #### 发送通知 最后一步就是调用 `notify()` 方法向目标用户推送已准备好的消息实例: ```java NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); notificationManager.notify(notificationId, builder.build()); ``` 以上即完成了整个流程——从初始化环境条件直到最终发出提示音效或震动反馈给用户的全过程描述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值