2013-03-19 56 views
2

我试图通知使用按钮,但Notification和setLatestEventInfo都被弃用。android上的通知管理器的问题

两个错误:

1.构造通知(INT,CharSequence中,长)已被弃用Notification notify = new Notification(android.R.drawable.stat_notify_more, "Hello all", System.currentTimeMillis());

2.方法setLatestEventInfo(Context, CharSequence, CharSequence, PendingIntent)在类型通知是不适用的参数(Context, CharSequence, CharSequence, Intent) notify.setLatestEventInfo(context, title, details, intent);

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button b = (Button) findViewById(R.id.button1); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      NotificationManager ns = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
      Notification notify = new Notification(android.R.drawable.stat_notify_more, "Hello all", System.currentTimeMillis()); 
      Context context = MainActivity.this; 
      CharSequence title ="you have be notified"; 
      CharSequence details = "Continue your work"; 
      Intent intent = new Intent(context,MainActivity.class); 
      PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); 
      notify.setLatestEventInfo(context, title, details, intent); 
      ns.notify(0,notify); 


     } 
    }); 
} 

API级别:

 android:minSdkVersion="11" 
     android:targetSdkVersion="17" 

有什么选择?

+0

@NiravRanpara ???? – 2013-03-19 07:30:06

回答

8

1.构造函数API等级11过时,所以你应该使用Notification.Builder

例如,

Notification notification = new Notification.Builder(mContext) 
    .setContentTitle("New mail from " + sender.toString()) 
    .setContentText(subject) 
    .setSmallIcon(R.drawable.new_mail) 
    .setLargeIcon(aBitmap) 
    .build(); 

2.在你的代码要传递的意图,而不是没有任何setLatestEventInfo

.... 
Intent intent = new Intent(context,MainActivity.class); 
     PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); 
     notify.setLatestEventInfo(context, title, details, pending); 
     ns.notify(0,notify); 
.... 
+0

什么是'aBitmap?' – 2013-03-19 09:12:03

+1

在示例中必须是Bitmap类的对象。 – KunalK 2013-03-20 05:12:44

+0

但是我们无法做到因为向后兼容。我们的应用程序应该在4.0,4.1和4.2.2上运行。所以我编译4.2.2和应用程序在所有设备上工作。并在manifest.xml中添加android:minSdkVersion =“11” android:targetSdkVersion =“17” – 2013-06-12 13:25:11

1
notificationManager = 
    (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
    myNotification = new Notification(R.drawable.icon, 
    "Notification!", 
    System.currentTimeMillis()); 
    Context context = getApplicationContext(); 
    String notificationTitle = "Exercise of Notification!"; 
    String notificationText = "http://niravranpara.blogspot.com/"; 
    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myBlog)); 
    PendingIntent pendingIntent 
    = PendingIntent.getActivity(AndroidNotification.this, 
     0, myIntent, 
     Intent.FLAG_ACTIVITY_NEW_TASK); 
    myNotification.defaults |= Notification.DEFAULT_SOUND; 
    myNotification.flags |= Notification.FLAG_AUTO_CANCEL; 
    myNotification.setLatestEventInfo(context, 
     notificationTitle, 
     notificationText, 
     pendingIntent); 
    notificationManager.notify(MY_NOTIFICATION_ID, myNotification); 

    } 
1

这些构造函数和方法已经deprecated.so你应该使用通知建设者代替。

Notification noti = new Notification.Builder(mContext) .setContentTitle("New mail from " + sender.toString()) .setContentText(subject)
.setSmallIcon(R.drawable.new_mail) .setLargeIcon(aBitmap) .build();

0

而不是System.currentTimeMillis()尝试java.lang.System.currentTimeMillis()