0

さまざまな API レベルの通知を処理しているときに、これらの行でエラーが発生します。これは私がこれまで行った方法です:

...
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
        Notification  notification;

if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB){

            notification = new Notification(icon, text, time);
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, TaskDetails.class), 0);
            notification.setLatestEventInfo(this, title, text, contentIntent);
            notification.flags |= Notification.FLAG_AUTO_CANCEL;
            mNM.notify(NOTIFICATION, notification);
        } 
        else
        {
            notification = new Notification.Builder(this) // error
             .setContentTitle(title) // in
             .setContentText(tmp_task_brief)  // these
             .setSmallIcon(icon) // lines
             .setLargeIcon(null) // telling "this method call requires API level 11
             .build(); // or higher"

            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, TaskDetails.class), 0);
            notification.setLatestEventInfo(this, title, text, contentIntent);
            notification.flags |= Notification.FLAG_AUTO_CANCEL;
            mNM.notify(NOTIFICATION, notification);
        }
...

これらのエラーを削除する方法がわかりません。私を助けてください。

編集:getNotification()以下のように編集を適用しましたが、NotificationCompact.Builer もNotification オブジェクトを返す非推奨のメソッドを取得しました。

if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB)
{
        notification = new Notification(icon, text, time);
        notification.setLatestEventInfo(this, title, text, contentIntent);
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        mNM.notify(NOTIFICATION, notification);
    } 
    else
    {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setContentIntent(contentIntent)
        .setSmallIcon(icon)
        .setTicker(text)
        .setWhen(System.currentTimeMillis())
        .setAutoCancel(true)
        .setContentTitle(title)
        .setContentText(text);

        notification = builder.getNotification();
        mNM.notify(NOTIFICATION, notification);
    }
4

2 に答える 2

2

1.6 からサポートするサポート ライブラリ (V4 ライブラリ) のNotificationCompact.Buliderを使用します。

それがあなたの問題を解決すると思います。

于 2013-05-31T11:39:12.430 に答える
0

最後に、これらの人たちの助けを借りて、非推奨のメソッドを処理するソリューションに行き着きました:

if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB) {

            notification = new Notification(icon, text, time);
            notification.setLatestEventInfo(this, title, text, contentIntent);
            notification.flags |= Notification.FLAG_AUTO_CANCEL;
            mNM.notify(NOTIFICATION, notification);
        } else {
            NotificationCompat.Builder builder = new NotificationCompat.Builder(
                    this);
            notification = builder.setContentIntent(contentIntent)
                    .setSmallIcon(icon).setTicker(text).setWhen(time)
                    .setAutoCancel(true).setContentTitle(title)
                    .setContentText(text).build();

            mNM.notify(NOTIFICATION, notification);
        }
于 2013-05-31T12:26:26.393 に答える