Android 状态栏通知

来源:互联网 发布:nginx正向代理配置 编辑:程序博客网 时间:2024/06/06 01:10

今天介绍一个Android应用中很使用的一个功能,状态栏通知。相信大家在开发应用中会经常用到这个,当然我们这里讲述的主要是代码实现,没有讲在什么情况下使用状态栏通知,这需要你开发的实际应用决定,遵守一个规则,用户体验。

MainActivity类

package com.example.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.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity {
private EditText editText1;
private EditText editText2;
private EditText editText3;
private Button button;
private Listener1 listener = new Listener1();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        editText1 = (EditText)this.findViewById(R.id.et1);
        editText2 = (EditText)this.findViewById(R.id.et2);
        editText3 = (EditText)this.findViewById(R.id.et3);
        button= (Button)this.findViewById(R.id.b);
        button.setOnClickListener(listener);
    }


    private final class Listener1 implements OnClickListener {


@Override
public void onClick(View v) {
String ticker = editText1.getText().toString(); //概要
String title = editText2.getText().toString();//标题
String content = editText3.getText().toString();//内容

Notification notification = new Notification(android.R.drawable.stat_notify_chat, ticker, System.currentTimeMillis());//概要
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:123456789"));//点击之后的事件为呼叫123456789号码
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 100, intent, 0);//1为请求码 0为Flag标志位
notification.setLatestEventInfo(MainActivity.this, title, content, pendingIntent);//点击通知时候进行的活动:用contentIntent传递
notification.defaults = Notification.DEFAULT_SOUND;//发送状态栏的默认铃声
notification.flags = Notification.FLAG_AUTO_CANCEL;//点击通知之后,取消状态栏图标

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);//得到系统通知服务
manager.notify(100, notification);//通知系统我们定义的notification,id为该notification的id;这里定义为100.

}
   
    }
    
}


布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="概要"/>
<EditText
        android:id="@+id/et1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="概要"/>  
    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="标题"/>
<EditText
        android:id="@+id/et2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="标题"/>  
<TextView
        android:id="@+id/tv3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="内容"/>
<EditText
        android:id="@+id/et3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="内容"/>                 
<Button
        android:id="@+id/b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="发送"/>   


</LinearLayout>



AndroidManifest文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.notification"
    android:versionCode="1"
    android:versionName="1.0" >


    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="15" />


    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <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>


代码还是比较简单的,需要注意的地方我都注释了。

核心代码:

Notification notification = new Notification(android.R.drawable.stat_notify_chat, ticker, System.currentTimeMillis());//概要
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:123456789"));//点击之后的事件为呼叫123456789号码
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 100, intent, 0);//1为请求码 0为Flag标志位
notification.setLatestEventInfo(MainActivity.this, title, content, pendingIntent);//点击通知时候进行的活动:用contentIntent传递
notification.defaults = Notification.DEFAULT_SOUND;//发送状态栏的默认铃声
notification.flags = Notification.FLAG_AUTO_CANCEL;//点击通知之后,取消状态栏图标

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);//得到系统通知服务
manager.notify(100, notification);//通知系统我们定义的notification,id为该notification的id;这里定义为100.

最后两行代码注意下就可以,得到一个通知管理器。


原创粉丝点击