您的位置:首页 > 移动开发 > Android开发

Android开发之自定义Notification(源代码分享)

2014-03-23 10:26 471 查看

    Android的自定义notification选项我觉得限制还是挺多的,如图所示,官方API告诉我们它依然必须得设置icon,tittle,text三个选项,除此之外,还一定要设置pengdingintent,不少网友还反映 builder.setContent(remoteViews)后面一定要紧跟着builder.setContentIntent(pendingIntent),要不然会报错误:android.app.RemoteServiceException:
Bad notification posted from package。



   MainActivity代码

package com.example.f04_notification;

import android.os.Bundle;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.Button;
import android.widget.RemoteViews;

public class MainActivity extends Activity {
private NotificationManager manager;
private Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.button1);
//获取系统服务
manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
NotificationCompat.Builder builder=new NotificationCompat.Builder(MainActivity.this);
RemoteViews remoteViews=new RemoteViews(getPackageName(), R.layout.notifiaction);
//因为android api的限制,自定义通知仍需要set small icon,setContentTittle,setContentText
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContentText("hello world!");
builder.setContentTitle("Android");
//以上内容仍必须设置一遍
remoteViews.setTextViewText(R.id.textView1, "通知来了");
remoteViews.setImageViewResource(R.id.imageView1, R.drawable.ic_launcher);
Intent intent=new Intent(MainActivity.this,MainActivity.class);
//pendingintent的flag分为四个FLAG_CANCEL_CURRENT,FLAG_NO_CREATE,FLAG_ONE_SHOT,FLAG_UPDATE_CURRENT
PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 1, intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContent(remoteViews);
builder.setContentIntent(pendingIntent);

manager.notify((int)System.currentTimeMillis(), builder.build());

}
});
}

}


布局xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:id="@+id/imageView1"
android:contentDescription="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="27dp"
android:layout_marginTop="33dp"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView1"
android:layout_marginLeft="76dp"
android:layout_toRightOf="@+id/imageView1"
android:text="@string/hello_world" />

</RelativeLayout>


     感谢大家的阅读,希望跟大家一起互相学习,互相进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息