2

私はこれを何時間も修正しようとしてきましたが、それでもうまくいきません。

私のコードは非常に基本的です:

BroadcastReceiver

 public class TimerNotif extends BroadcastReceiver
 {

    @Override
    public void onReceive(Context context, Intent intent)
    {
        notificationStatus(context);
    }

    private void notificationStatus(Context context) {
        final NotificationManager mNotificationManager = (NotificationManager) 
                context.getSystemService(Context.NOTIFICATION_SERVICE);

        final int icon = R.drawable.ic_launcher;
        final Notification notification = new Notification(icon, "test", System.currentTimeMillis());
        final Intent notificationIntent = new Intent(context.getApplicationContext(), Main.class);
        final PendingIntent pIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, notificationIntent, 0);

        notification.setLatestEventInfo(context, "ticker", "title", pIntent);
        mNotificationManager.notify(1, notification);
    }
}

主な活動

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Calendar cal = Calendar.getInstance();

    Intent intent = new Intent(Main.this, TimerNotif.class);
    PendingIntent pIntent = PendingIntent.getBroadcast(Main.this, 0, intent, 0);

    AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pIntent);
}

そしてこれをマニフェストのアプリケーションタグに

<receiver android:name="TimerNotif"></receiver>

何も起こりません!TimeNotifへのコードが実行されていませんが、なぜですか?

4

1 に答える 1

4

する必要があります:

<receiver android:name=".TimerNotif"></receiver>

".TimerNotif"は完全なクラス名のショートカットであるため、クラスがアプリケーションのルートパッケージにある場合。それ以外の場合は、次のようになります。

<receiver android:name="your.package.name.TimerNotif"></receiver>
于 2012-07-30T13:51:41.953 に答える