在通知栏设置进度条的可见性,会无缘无故的崩溃。
//下面一句是没有语法错误的,但是会导致程序出错
//为了解决这个问题,后面我们会再progressView外面包裹一层LinearLayout来控制可见性
updateNotification.contentView.setViewVisibility(progressViewID, View.GONE);
布局文件updata_nitification.xml:
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:orientation
=
"vertical"
android:layout_weight
=
"2"
android:paddingLeft
=
"5dip"
>
<
LinearLayout
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:gravity
=
"left|center_vertical"
android:orientation
=
"horizontal"
android:layout_weight
=
"1"
>
<
ImageView
android:src
=
"@drawable/icon"
android:layout_width
=
"24dip"
android:layout_height
=
"fill_parent"
android:scaleType
=
"fitCenter"
/>
<
TextView
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"@string/app_name"
android:textColor
=
"#000000"
android:paddingLeft
=
"5dip"
android:textSize
=
"16dip"
/>
</
LinearLayout
>
<
LinearLayout
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:gravity
=
"left"
android:orientation
=
"horizontal"
android:layout_weight
=
"1"
>
<
TextView
android:id
=
"@+id/update_notification_progresstext"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:textColor
=
"#8F8F8F"
android:textSize
=
"14dip"
/>
<
LinearLayout
android:id
=
"@+id/update_notification_progressblock"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:orientation
=
"horizontal"
>
<
ProgressBar
android:id
=
"@+id/update_notification_progressbar"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
style
=
"?android:attr/progressBarStyleHorizontal"
/>
</
LinearLayout
>
</
LinearLayout
>
</
LinearLayout
>
开始下载:
updateNotification.contentIntent = updatePendingIntent;
updateNotification.contentView.setProgressBar(
com.cnblogs.tianxia.subway.R.id.update_notification_progressbar,
100
,
0
,
false
);
updateNotification.contentView.setTextViewText(
com.cnblogs.tianxia.subway.R.id.update_notification_progresstext,
"0%"
);
正在下载,显示下载进度条:
updateNotification.contentView.setProgressBar(
com.cnblogs.tianxia.subway.R.id.update_notification_progressbar,
100
, (
int
)(totalSize*
100
/updateTotalSize),
false
);
updateNotification.contentView.setTextViewText(
com.cnblogs.tianxia.subway.R.id.update_notification_progresstext,
(
int
)(totalSize*
100
/updateTotalSize)+
"%"
);
updateNotificationManager.notify(
0
, updateNotification);
下载完成,点击可以安装:
//点击安装PendingIntent
Uri uri = Uri.fromFile(updateFile);
Intent installIntent =
new
Intent(Intent.ACTION_VIEW);
installIntent.setDataAndType(
uri,
"application/vnd.android.package-archive"
);
updatePendingIntent = PendingIntent.getActivity(
UpdateService.
this
,
0
, installIntent,
0
);
updateNotification.defaults = Notification.DEFAULT_SOUND;
//铃声提醒
updateNotification.contentIntent = updatePendingIntent;
//安装界面
updateNotification.contentView.setViewVisibility(
com.cnblogs.tianxia.subway.R.id.update_notification_progressblock, View.GONE);
updateNotification.contentView.setTextViewText(
com.cnblogs.tianxia.subway.R.id.update_notification_progresstext,
"下载完成,点击安装!"
);
updateNotificationManager.notify(
0
, updateNotification);
效果图如下: