android顯示通知欄Notification以及自定義Notification的View

遇到的最大的問題是監聽不到用戶清除通知欄的廣播。因此是不能監聽到的。java

自定義通知欄的View,而後service運行時更改notification的信息。app

/**
     * Show a notification while this service is running.
     * 在service運行時,顯示通知信息
     */
    public void showNotification() {
     NotificationManager mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);        CharSequence text = getText(R.string.app_name);
        Notification notification = new Notification(R.drawable.img_step_counter_user, null,
                System.currentTimeMillis());
      // 標誌位的設置:應設置爲能夠自動取消,這樣用戶就能夠取消他,若是設置爲Intent.FLAG_ACTIVITY_CLEAR_TOP | Notification.FLAG_ONGOING_EVENT;則會一直顯示通知//        notification.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP | Notification.FLAG_ONGOING_EVENT;
        notification.flags = Notification.FLAG_AUTO_CANCEL;
        Intent pedometerIntent = new Intent();
        pedometerIntent.setComponent(new ComponentName(this, StepCounterHomePageActivity.class));
        pedometerIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                pedometerIntent, 0);
        notification.setLatestEventInfo(this, text,
                getText(R.string.notification_subtitle)+":  "+SensorData.stepNum+" 步", contentIntent);
    // 其中R.layout.notification是一個佈局文件        notification.contentView = new RemoteViews(getPackageName(),R.layout.notification);
        notification.contentView.setViewVisibility(R.id.usermessage, View.VISIBLE);
        notification.contentView.setViewVisibility(R.id.notification_background, View.GONE);
        notification.contentView.setViewVisibility(R.id.notification_layout, View.GONE);
        notification.contentView.setTextViewText(R.id.tv_user_name_step, "掌上醫生");
        notification.contentView.setTextViewText(R.id.tv_use_date_step, "計算步數: "+SensorData.stepNum+"步");
        
        mNM.notify(R.string.app_name, notification);
    }
相關文章
相關標籤/搜索