2013-01-15 97 views
3
NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
Notification n=new Notification(android.R.drawable.stat_notify_more , "My Alarm Ringing", System.currentTimeMillis()); 
Context cn=MainActivity.this; 
CharSequence title="My Alarm Clock"; 
CharSequence details="Alarm Ringing....!!!"; 
Intent in=new Intent(cn,Alarm.class); 
PendingIntent p=PendingIntent.getActivity(cn, 0, in, 0); 
n.setLatestEventInfo(cn,title,details,p); 
nm.notify(0,n); 

在ecllipse我得到通知在第二行和setLatestEventInfo在最後第二行被擊中。爲什麼如此......? 任何人都可以清除什麼是錯誤..? thanx的幫助爲什麼我在通知中得到棄用警告..?

+0

什麼API來編譯你的代碼不能使用setLatestEventInfo()你在用嗎? – 2013-01-15 05:40:55

+1

請參閱[here](http://developer.android.com/reference/android/app/Notification.html)'setLatestEventInfo方法在API級別11中已棄用。使用Notification.Builder替代' –

+0

即時使用API​​級別17 – Scorpian

回答

3

Deprecation

a status applied to features, characteristics, or practices to indicate that they should be avoided, typically because they have been superseded.

的警告提醒你在你的目標SDK已經被廢棄的方法,這樣就可以儘量避免使用它。

在這種特定的情況下,警告建議您使用Notification.Builder代替,但是如果你的需求不允許你使用Notification.Builder,由於向後兼容,否則,您可以(最有可能)繼續使用setLatestEventInfo沒有問題。看起來,這只是對API的升級,而不是您需要避免的特別重要的事情。

+1

我該如何刪除它..? – Scorpian

+0

改爲使用'Notification.Builder'。 –

+1

@ dicarlo2 ..不可能,如果他正在使用** minSdk 8 ** ..他可以將目標sdk設置爲8而不是...... – ngesh

1

由於您在目標SDK中提到過,此方法已被棄用...簡單。

其更好地閱讀文檔,而不是docs

2

Notification.setLatestEventInfo()API中的11(source)的depreceated。正如其他人所提到的,您應該使用Notification.Builder代替。 (source

如果您使用API​​ 11之前的API,則可以使用Android提供的兼容性包。使用這個庫將允許您使用API​​ 11及更高版本運行API 11及更低版本的設備。 Android Support Library

此外,只是你知道,而不是使用Notification.Builder()你需要使用NotificationCompat.Builder()。

2

對舊版本使用NotificationCompat。

private NotificationCompat.Builder buildNormal() { 
    NotificationCompat.Builder b = new NotificationCompat.Builder(mContext.getApplicationContext()); 

    b.setAutoCancel(true) 
    .setDefaults(Notification.DEFAULT_ALL) 
    .setWhen(System.currentTimeMillis())   
    .setSmallIcon(R.drawable.ic_launcher) 
    .setTicker("Optional ticker")    
    .setContentTitle("Default notification") 
    .setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.") 
    .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_VIBRATE| Notification.DEFAULT_SOUND) 
    .setContentIntent(buildPendingIntent()) 
    .setContentInfo("Info"); 


    return b; 
} 
0

根據https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-notifications 「這釋放移除Notification.setLatestEventInfo()方法,使用Notification.Builder類,而不是構造通知。」對於Android 6.0使用API​​ Level 23,當我嘗試使用setLatestEventInfo()時,我的代碼甚至無法編譯。我得到以下錯誤:

Error:(86, 15) error: cannot find symbol method setLatestEventInfo(Context,String,String,PendingIntent) 

你說你使用API​​級別17.我只能確定,如果你想與API級別23

+0

我在http://stackoverflow.com/questions/19474116/the-constructor-notification-is-deprecated上閱讀,「Notification的構造函數在API 11以前不推薦使用」 。我們現在應該使用這個:https://developer.android.com/reference/android/app/Notification.Builder.html。 –

相關問題