首先是一個寫通知樣式的activity這裏只是簡單的寫了一下
<RelativeLayout 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"
tools:context="${relativePackage}.${activityClass}" >
<ImageView
android:id="@+id/imageNo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp" />
<TextView
android:id="@+id/titleNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/imageNo" />
<TextView
android:id="@+id/textNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/titleNo"
android:layout_toRightOf="@id/imageNo" />
</RelativeLayout>
下面是當出現通知時,用戶點擊會跳出這個頁面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button2"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
他的邏輯界面
public class aaActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.aa);
}
}
在主界面寫了一個簡單的按鈕
<pre name="code" class="html"><RelativeLayout 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"
tools:context="${relativePackage}.${activityClass}" >
<Button
android:id="@+id/btnCustomNotification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="105dp"
android:layout_marginTop="158dp"
android:text="通知" />
</RelativeLayout>
最後是最重要的主邏輯界面
<pre name="code" class="java">public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
btn = (Button) findViewById(R.id.btnCustomNotification);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
/*
* 遠程試圖
*/
RemoteViews contentViews = new RemoteViews(getPackageName(),
R.layout.activity_n);
contentViews.setTextViewText(R.id.textNo, "123");
contentViews.setTextViewText(R.id.titleNo, "456");
/*
* 通知點擊事件其中PendingIntent是待處理的intent而
* PendingIntent.FLAG_CANCEL_CURRENT是當有多條推送信息的時候最新的一條點擊響應
*/
Intent intent = new Intent(MainActivity.this, aaActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
/*
* 需要創建一個Notification對象用來承載通知的內容
* 小圖標,使用setSamllIcon()方法設置。
* 標題,使用setContentTitle()方法設置。
* 文本內容,使用setContentText()方法設置。
*/
Notification.Builder mBuilder = new Notification.Builder(
MainActivity.this).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("My notification")
.setTicker("new message");
mBuilder.setAutoCancel(true);
mBuilder.setContentIntent(pendingIntent);//詳細內容的頁面
mBuilder.setContent(contentViews);
mBuilder.setAutoCancel(true);//自動取消
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(10, mBuilder.build());// 發送通知
}
});
}
}
這裏是簡單的實現點擊通知按鈕,會發出通知,在通知欄點擊通知會跳到相應的界面。