5

これは私のコードです:


NotificationManager mNotificationManager = (NotificationManager) c.getSystemService(ns);

    //Instantiate the notification

    CharSequence tickerText = "Hello";
    long when = System.currentTimeMillis();
    Notification.Builder builder = new Notification.Builder(c)
                                .setTicker(tickerText)
                                .setWhen(when)
                                .setContentTitle("Test Notification")
                                .setContentText(arg1.getStringExtra("info"))
                                .setSmallIcon(R.drawable.ic_launcher)
                                .setAutoCancel(true);
    Notification notification = builder.getNotification();
    mNotificationManager.notify(88, notification);

findは機能しますが、使用Notification notification = builder.getNotification();は非推奨です。私がやるべきようにNotification notification = builder.build();。問題は、Eclipseがそれを認識していないことです。つまり、コンパイルできません。build()ドキュメントは存在し、その推奨される方法は明らかですが、私の側では機能していません。非推奨ではないコードを使用したいので、どんな助けでも大歓迎です。

輸入


import android.app.Notification;
import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import android.app.Notification.Builder;使用されていないと言っていることに注意してください。

4

2 に答える 2

2

11未満のバージョンSDK用に開発する場合は、作成通知にandroid.app.Notification.Builderクラスの代わりにのコードを使用できます。

private void createNotification(){
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.ic_launcher, "Hello", System.currentTimeMillis());
    Intent notificationIntent = new Intent(this, YourActivity.class);

    Random r = new Random();
    int notificationId = r.nextInt();
    notificationIntent.putExtra("n_id", notificationId);
    PendingIntent contentIntent = PendingIntent.getActivity(this, notificationId, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    notification.defaults |= Notification.DEFAULT_SOUND;
    notification.setLatestEventInfo(this, "Party", "Welcome!", contentIntent);
    mNotificationManager.notify(notificationId, notification);      
}

この通知は、YourActivityで次のようにキャンセルできます。

public class YourActivity extends Activity{ 

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity);

    int notificationId = getIntent().getIntExtra("n_id", -1);

    if (notificationId!=-1) {
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.cancel(notificationId);
    }
  }
}
于 2012-11-20T14:23:11.543 に答える
1

これは、必要なメソッド/ APIを保持していないバージョン(この場合はbuild())に対してアプリコードをコンパイルしている場合にのみ発生します。

コンパイルしているバージョンでビルドが利用できない場合は、より高いバージョンのAndroidでコンパイルすることをお勧めします。下位互換性のためにマニフェストには常に最小のSDKバージョンがあります。

ありがとう

于 2012-07-07T04:33:24.167 に答える