Notification,Android中通知的使用

在Android中,我们往往会被通知吸引去打开某个App。通知可以在活动中创建,在广播中创建,也可以在服务里创建。这篇文章简单的介绍了通知的使用。


效果图


可以看见,在标题栏中有一个自定义的通知。



当我们点击该通知时,会进入到一个新的Activity,如下:


源代码

MainActivity.java,这个类主要用于创建通知,以及设置通知的各个属性。
package com.example.notificationtest;

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.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.io.File;

public class MainActivity extends AppCompatActivity {

    private Button sendNotice;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sendNotice = (Button)findViewById(R.id.send_notice);
        sendNotice.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
                Intent intent = new Intent(MainActivity.this,NotificationActivity.class);
                PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);//设置好pi
                Uri Sounduri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tong.ogg"));

                long[] vibrates = {0,1000,1000,1000};
                Notification notification = new Notification.Builder(getApplicationContext())
                        .setContentTitle("this is first,我是标题")
                        .setContentText("this is second,我告诉你哦")
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setTicker("ticker text")
                        .setContentIntent(pi)
                        .setSound(Sounduri)
                        .setVibrate(vibrates)
                        .build();
                notification.ledARGB = Color.GREEN;
                notification.ledOnMS = 1000;
                notification.ledOffMS = 1000;
//                notification.defaults = Notification.DEFAULT_ALL;
                manager.notify(1,notification);
            }
        });
    }

}
上面的类囊括了创建一个通知的主要功能。该流程大体如下:
1、创建管理通知的,NotificationManager
2、设置一个notification的各个属性
3、利用manager,启动一个通知。
关于通知的细节:
1、ticker是当通知出现时候,会在顶端有一个介绍,就像我们用QQ,当某人发来信息的时候,会出现"您有一条新的信息"字样。
2、利用PendingIntent来创建点击通知后的动作。
3、我们可以设置通知出现时,手机发出的声音以及震动的频率、LED等闪烁等,个人喜欢用它的DEFAULT属性就一键搞定了(注释部分)。
4、notify中的1,唯一标识了该通知,它既保证了调用多次notify(1,notification),只会执行一次;同时在取消该通知时,唯一标识。




NotificationActivity.java,该类用于创建点击通知后的活动。
package com.example.notificationtest;

import android.app.Notification;
import android.app.NotificationManager;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;

/**
 * 项目名称:NotificationTest
 * 类描述:
 * 创建人:吴乐
 * 创建时间:2016/4/20 20:15
 * 修改人:吴乐
 * 修改时间:2016/4/20 20:15
 * 修改备注:
 */
public class NotificationActivity extends AppCompatActivity{
    /**
     * @param savedInstanceState
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notification_layout);
        NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        manager.cancel(1);
    }
}
这里唯一需要注意的是在cancel时,只对标识为1的通知进行操作。
 
 
	该通知用到了震动以及一个新的活动,所以需要修改Manifest。
	AndroidManifest.xml
 
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.notificationtest">

    <uses-permission android:name="android.permission.VIBRATE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <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=".NotificationActivity" />
    </application>

</manifest>


这个功能封装的相当好了,如果有需要,多尝试几次就哦了。当然,通知中还有更加细节化的操作,用得着再学习吧。
Fighting!Fighting!Fighting!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值