通知栏显示进度条组件的一个bug。

  在通知栏设置进度条的可见性,会无缘无故的崩溃。

 

//下面一句是没有语法错误的,但是会导致程序出错
//为了解决这个问题,后面我们会再progressView外面包裹一层LinearLayout来控制可见性

updateNotification.contentView.setViewVisibility(progressViewID, View.GONE);

布局文件updata_nitification.xml:

 

<? xml version = "1.0" encoding = "utf-8" ?>
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
     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);

 效果图如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值