今天介绍一个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.
最后两行代码注意下就可以,得到一个通知管理器。