android-21/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
文件中的onClick(View v)方法中会处理点击通知栏选项的事件:
public void onClick(View v) { if (v == mSettingsButton) { startSettingsActivity(); } else if (v == mSystemIconsSuperContainer) { startBatteryActivity(); } else if (v == mAlarmStatus && mNextAlarm != null) { PendingIntent showIntent = mNextAlarm.getShowIntent(); if (showIntent != null && showIntent.isActivity()) { mActivityStarter.startActivity(showIntent.getIntent(), true /* dismissShade */); } } }其中看到showIntent.isActivity()用于判断这个PendingIntent类是否Activity类型的,若是,用startActivity的方式来启动该PendingIntent类中的intent,该intent通过getIntent()方法获得,可是没有对外开放。
说到这里,如果希望点击通知栏来启动activity都是通过PendingIntent.getActivity(),然而这里貌似有个坑(http://blog.csdn.net/wangchun8926/article/details/39100661),而这个坑估计是和上述showIntent.getIntent()返回的intent还是旧的那个有关,具体原因有待查明。