现在的位置: 首页 > 移动开发 > 正文

android学习笔记—52_发送状态栏通知

2019年09月18日 移动开发 ⁄ 共 6291字 ⁄ 字号 评论关闭

2013/5/12
52_发送状态栏通知
----------------------
Android的状态栏通知(Notification)
通知用于在状态栏显示消息,消息到来时以图标方式表示,如下:
------------------------------------------------------------
就是activity顶部的状态栏
-----------------------------------------------------
如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息。
发送消息的代码如下:
//获取通知管理器
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
int icon = android.R.drawable.stat_notify_chat;
long when = System.currentTimeMillis();
//新建一个通知,指定其图标和标题
Notification notification = new Notification(icon, null, when);//第一个参数为图标,第二个参数为标题,第三个为通知时间
notification.defaults = Notification.DEFAULT_SOUND;//发出默认声音
Intent openintent = new Intent(this, OtherActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//当点击消息时就会向系统发送openintent意图
notification.setLatestEventInfo(this, “标题”, “我是内容", contentIntent);
mNotificationManager.notify(0, notification);//第一个参数为自定义的通知唯一标识
---------------------------------------------------------------------------------
1.通知由:标题,内容,和时间组成
-----------------------------------
2.以一个例子介绍:
下面是软件的界面:
-----------------------
  概要:
      EditText
  标题:
      EditText
  内容:
      EditText
  发送:
      Button
-----------------------
3.源码:新建android项目:Notification
  a./Notification/AndroidManifest.xml
   <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.credream.notification"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".NotificationActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <!-- 打电话的权限 -->
<uses-permission android:name="android.permission.CALL_PHONE"/>
</manifest>
---------------------------------------------------------------------
b./Notification/src/com/credream/notification/NotificationActivity.java
  package com.credream.notification;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class NotificationActivity extends Activity {
    private EditText shorttitleText;
    private EditText titleText;
    private EditText contentText;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //①.找出所需要的几个EditText
        shorttitleText = (EditText) this.findViewById(R.id.shorttitle);
        titleText = (EditText) this.findViewById(R.id.title);
        contentText = (EditText) this.findViewById(R.id.content);
    }
   
    public void send(View v){
     /// ②.取得用户输入的值
     String tickerText = shorttitleText.getText().toString();
     String title = titleText.getText().toString();
     String content = contentText.getText().toString();
       /// 用系统自带的图标 android.R.drawable.stat_notify_chat在   R文件中找到drawable文件夹下的图标 
     int icon = android.R.drawable.stat_notify_chat;
     /// ③.发送通知
     Notification notification = new Notification(icon, tickerText, System.currentTimeMillis());
     // new Notification(icon, tickerText, System.currentTimeMillis());
//这里的三个参数意思是:ico是通知图标,tickerText通知概要,第三个是通知发送时间
     Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:15954910204"));
     // 这个意图可以用来激活activity组件。
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 10, intent, 0);
     // getActivity(this, 10, intent, 0);上下文对象
     /*内部是这样实现的:把上下文对象传进去
      * 然后context.startActivityForResult(intent,requestCode,flags),10是请求码
      * intent是意图,requestCode请求码,flags是为意图对象设置的标志位,不用的话就设置为0。
      * 执行顺序:
      *      当用户点击通知后,会调用pendingIntent,这个对象,访问context.startActivityForResult(intent,requestCode,flags)
      *      这个方法,然后把意图发送出去,然后激活,拨号activity进行拨号
      * */
     
     notification.setLatestEventInfo(this, title, content, pendingIntent);
     // 设置上下文对象,设置标题,设置内容,pendingIntent,比如当来了通知后,把状态栏拉下来后,
     // 点击通知概要会打开响应的软件,比如,来了短信点击短信概要后,会自动的打开短信应用来查看短信
     // pendingIntent这个就是指定用什么应用打开该通知。
     // 设置接收了通知后的提示声音,这里使用了系统默认的声音。
     notification.defaults = Notification.DEFAULT_SOUND;
     
     // 这里设置当用户点击完通知后,通知自动在状态栏消失。
     notification.flags = Notification.FLAG_AUTO_CANCEL;
     
     // 取得通知管理器,这是系统的一个服务
     NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
     // 第一个参数是通知的id,第二个是通知对象
     manager.notify(100, notification);
    }
    // 通知还可以自定义:实现自定义通知的界面和形式
}
----------------------------------------------------------------------
c./Notification/res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">发送通知</string>
    <string name="shorttitle">概要</string>
    <string name="title">标题</string>
    <string name="content">内容</string>
    <string name="button">发送</string>
</resources>
--------------------------------------
d./Notification/res/layout/main.xml
  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/shorttitle"
    />
   
    <EditText
     android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/shorttitle"
    />
   
  <TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/title"
    />
   
    <EditText
     android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/title"
    />
   
   <TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/content"
    />
   
    <EditText
     android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/content"
    />
   
    <Button
     android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button"
    android:onClick="send"
    />
</LinearLayout>
----------------------------------------

抱歉!评论已关闭.