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>
感谢大家的阅读,希望跟大家一起互相学习,互相进步!