代码之家  ›  专栏  ›  技术社区  ›  Christopher Treanor

通知生成器不能接受“this”作为“context”的替代,为什么?

  •  1
  • Christopher Treanor  · 技术社区  · 12 年前

    我该如何解决这个问题?如果我将其替换为 this 。它在生成器上创建了更多错误。我该如何解决?

    java类中的所有代码。在这种情况下,功能围绕 onStartCommand .

     public class MyNotificationService extends Service {
    
        @Override
        public IBinder onBind(Intent arg0) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            Toast.makeText(this, "OnCreate()", Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
            Toast.makeText(this, "OnDestroy()", Toast.LENGTH_SHORT).show();
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            // TODO Auto-generated method stub
            Toast.makeText(this, "OnStartCommand()", Toast.LENGTH_SHORT).show();
            NotificationManager notificationmanager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
            Intent notificationintent = new Intent(this, Reminder_2.class);
            PendingIntent pendingintent = PendingIntent.getActivity(this, 0, notificationintent, 0);
            int icon=R.drawable.ic_launcher;
            long when=System.currentTimeMillis();
            Notification.Builder builder = new Builder(this);
            builder.setContentIntent(pendingintent);
            builder.setAutoCancel(true);
            builder.setSmallIcon(icon);
            builder.setWhen(when);
            builder.setTicker("Notification");
            builder.setContentTitle("Title");
            builder.setContentText("Content");
            Notification notification = builder.build();
            notificationmanager.notify(033, notification);
            return super.onStartCommand(intent, flags, startId);
        }
    
    
    }
    
    3 回复  |  直到 11 年前
        1
  •  2
  •   Hareshkumar Chhelana    12 年前
    // try this
    Notification.Builder builder = new Notification.Builder(this);
    
        2
  •  1
  •   nhgrif    12 年前

    使用 getApplicationContext() 而不是 this

        3
  •  0
  •   Solomon    12 年前

    我认为您使用了错误的Builder类,请在下面尝试,

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

    参考文献: android developer site, Notification.Builder

    希望能帮助你。