版本更新代码

来源:互联网 发布:农村淘宝怎么货到付款 编辑:程序博客网 时间:2024/05/17 19:57

转自http://blog.csdn.net/u014452224/article/details/51791032,版权为原作者所有,本人转载只为自己方便查找,没有任何商业目的
这里写图片描述 
点击更新之后的 
这里写图片描述 
可能有人会问为啥点击更新提示框不消失啊,可以根据自己的情况而定,有的需要强制更新,也是为了方便用户看到下载的进度。我这里只是为了测试一下效果而已。真正的是点击更新以后会在通知栏里面进行显示的 效果就是这样的 
这里写图片描述 
也有的可能需要在桌面上面展示给用户,下面的效果 
这里写图片描述 
这些都是是需求而定的。不多说了上代码

<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">package</span> com.liuyongxiang.update.activity;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.io.BufferedReader;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.io.File;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.io.IOException;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.io.InputStream;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.io.InputStreamReader;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.io.RandomAccessFile;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.net.HttpURLConnection;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.net.MalformedURLException;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> java.net.URL;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.apache.http.HttpResponse;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.apache.http.client.HttpClient;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.apache.http.client.methods.HttpGet;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.apache.http.client.methods.HttpPost;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.apache.http.impl.client.DefaultHttpClient;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.apache.http.params.HttpConnectionParams;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.json.JSONException;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> org.json.JSONObject;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.lidroid.xutils.HttpUtils;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.lidroid.xutils.exception.HttpException;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.lidroid.xutils.http.ResponseInfo;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.lidroid.xutils.http.callback.RequestCallBack;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.liuyongxiang.update.R;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.liuyongxiang.update.bean.VersionBean;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.liuyongxiang.update.utils.MyConstants;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.liuyongxiang.update.utils.SpTools;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.liuyongxiang.update.view.NumberProgressBar;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> com.liuyongxiang.update.view.OnProgressBarListener;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.annotation.SuppressLint;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.annotation.TargetApi;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.app.Activity;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.app.AlertDialog;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.app.Notification;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.app.NotificationManager;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.app.PendingIntent;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.content.Context;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.content.Intent;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.content.SharedPreferences;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.content.pm.PackageInfo;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.content.pm.PackageManager;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.content.pm.PackageManager.NameNotFoundException;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.graphics.PixelFormat;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.graphics.pdf.PdfDocument;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.media.AudioManager;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.net.Uri;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.os.Build;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.os.Bundle;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.os.Environment;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.os.Handler;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.os.Message;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.os.SystemClock;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.support.v4.app.NotificationCompat;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.text.TextUtils;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.text.method.ScrollingMovementMethod;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.Gravity;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.LayoutInflater;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.MotionEvent;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.View;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.View.OnClickListener;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.View.OnTouchListener;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.Window;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.WindowManager;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.view.WindowManager.LayoutParams;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.widget.Button;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.widget.ImageView;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.widget.LinearLayout;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.widget.RelativeLayout;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.widget.RemoteViews;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.widget.TextView;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> android.widget.Toast;<span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@TargetApi</span>(Build.VERSION_CODES.HONEYCOMB)<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">SplashActivity</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">extends</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">Activity</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">implements</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">OnProgressBarListener</span> {</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> LOADMAIN = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 加载主界面</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> SHOWUPDATEDIALOG = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 显示是否更新的对话框</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> ERROR = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 错误统一代号</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> RelativeLayout rl_root;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 界面的根布局组件</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> versionCode;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 版本号</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> String versionName;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 版本名</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> TextView tv_versionName;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 显示版本名的组件</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> VersionBean parseJson;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// url信息封装bean</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> startTimeMillis;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 记录开始访问网络的时间</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> NumberProgressBar pb_download;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 下载最新版本apk的进度条</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> Notification.Builder mBuilder;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> NotificationManager mNotificationManager;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> NOTIFICATION_ID = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 通知唯一id</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> MUTE = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 0表示静音</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> VIBRATE = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 1表示震动</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> SOUND = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>; <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 2表示响音</span>    <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onCreate</span>(Bundle savedInstanceState) {        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span>.onCreate(savedInstanceState);        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 初始化界面</span>        initView();        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 初始化数据</span>        initData();        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//如果正常的从服务器获取应调用下面的timeInitialization(),而showUpdateDialog()只是为了测试查看一下效果</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// timeInitialization();</span>        showUpdateDialog();    }    <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/**     * 耗时的功能封装,只要耗时的处理,都放到此方法     */</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">timeInitialization</span>() {        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 一开始动画,就应该干耗时的业务(网络,本地数据初始化,数据的拷贝等)</span>        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (SpTools.getBoolean(getApplicationContext(), MyConstants.AUTOUPDATE,                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>)) {            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// true 自动更新</span>            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 检测服务器的版本</span>            checkVerion();        }        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 增加自己的耗时功能处理</span>    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">initData</span>() {        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 获取自己的版本信息</span>        PackageManager pm = getPackageManager();        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span> {            PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 版本号</span>            versionCode = packageInfo.versionCode;            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 版本名</span>            versionName = packageInfo.versionName;            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 设置textview</span>            tv_versionName.setText(versionName);        } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> (NameNotFoundException e) {            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// can not reach 异常不会发生</span>        }    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">checkVerion</span>() {        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 耗时操作都要放到子线程中执行</span>        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Thread(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Runnable() {            <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">run</span>() {                BufferedReader bfr = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>;                HttpURLConnection conn = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>;                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> errorCode = -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 正常,没有错误</span>                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span> {                    startTimeMillis = System.currentTimeMillis();                    URL url = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> URL(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://10.0.2.2:8080/guardversion.json"</span>);                    conn = (HttpURLConnection) url.openConnection();                    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 读取数据的超时时间</span>                    conn.setReadTimeout(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5000</span>);                    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 网络连接超时</span>                    conn.setConnectTimeout(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5000</span>);                    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 设置请求方式</span>                    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 获取相应结果</span>                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> code = conn.getResponseCode();                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (code == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">200</span>) {<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 数据获取成功</span>                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 获取读取的字节流</span>                        InputStream is = conn.getInputStream();                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 把字节流转换成字符流</span>                        bfr = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> BufferedReader(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> InputStreamReader(is));                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 读取一行信息</span>                        String line = bfr.readLine();                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// json字符串数据的封装</span>                        StringBuilder json = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> StringBuilder();                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> (line != <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>) {                            json.append(line);                            line = bfr.readLine();                        }                        parseJson = parseJson(json);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 返回数据封装信息</span>                    } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> {                        errorCode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">404</span>;                    }                } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> (MalformedURLException e) {<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 4002</span>                    errorCode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4002</span>;                    e.printStackTrace();                } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> (IOException e) {<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 4001</span>                    errorCode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4001</span>;                    e.printStackTrace();                } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> (JSONException e) {                    errorCode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4003</span>;                    e.printStackTrace();                } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">finally</span> {                    Message msg = Message.obtain();                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (errorCode == -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) {                        msg.what = isNewVersion(parseJson);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 检测是否有新版本</span>                    } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> {                        msg.what = ERROR;                        msg.arg1 = errorCode;                    }                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> endTime = System.currentTimeMillis();                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (endTime - startTimeMillis < <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3000</span>) {                        SystemClock.sleep(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3000</span> - (endTime - startTimeMillis));<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 时间不超过3秒,补足3秒</span>                    }                    handler.sendMessage(msg);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 发送消息</span>                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span> {                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 关闭连接资源</span>                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (bfr != <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>) {                            bfr.close();                        }                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (conn != <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>) {                            conn.disconnect();                        }                    } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> (IOException e) {                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// TODO Auto-generated catch block</span>                        e.printStackTrace();                    }                }            }        }).start();    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> Handler handler = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Handler() {        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">handleMessage</span>(android.os.Message msg) {            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 处理消息</span>            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">switch</span> (msg.what) {            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> LOADMAIN:<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 加载主界面</span>                loadMain();                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> ERROR:<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 有异常</span>                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">switch</span> (msg.arg1) {                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">404</span>:<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 资源找不到</span>                    Toast.makeText(getApplicationContext(), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"404资源找不到"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)                            .show();                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4001</span>:<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 找不到网络</span>                    Toast.makeText(getApplicationContext(), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"4001没有网络"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)                            .show();                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4003</span>:<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// json格式错误</span>                    Toast.makeText(getApplicationContext(), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"4003json格式错误"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>)                            .show();                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">default</span>:                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;                }                loadMain();<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 进入主界面</span>                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> SHOWUPDATEDIALOG:<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 显示更新版本的对话框</span>                showUpdateDialog();                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">default</span>:                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;            }        }    };    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> AlertDialog dialog;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">loadMain</span>() {        Intent intent = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Intent(SplashActivity.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>, MainActivity.class);        startActivity(intent);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 进入主界面</span>        finish();<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 关闭自己</span>    };    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> <span class="hljs-title" style="box-sizing: border-box;">isNewVersion</span>(VersionBean parseJson) {        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 获取服务器设置的版本</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// int serverCode = parseJson.getVersionCode();</span>        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> serverCode = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>;<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 获取服务器的版本</span>        System.out.println(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"serverCode----->"</span> + serverCode);        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (serverCode == versionCode) {            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 如果版本一致直接进入到主界面</span>            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> LOADMAIN;            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/*             * 进入主界面 Message msg = Message.obtain(); msg.what = LOADMAIN;             */</span>        } <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> {            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 否则会弹出提示更新的提示框</span>            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> SHOWUPDATEDIALOG;        }    }    <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/**     * 显示是否更新新版本的对话框     */</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">showUpdateDialog</span>() {        dialog = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> AlertDialog.Builder(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>).create();        dialog.setCancelable(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>);        dialog.show();        Window window = dialog.getWindow();        window.setContentView(R.layout.prompt_alertdialog);        LinearLayout ll_title = (LinearLayout) window                .findViewById(R.id.ll_title);        ll_title.setVisibility(View.VISIBLE);        TextView tv_title = (TextView) window.findViewById(R.id.tv_title);        pb_download = (NumberProgressBar) window                .findViewById(R.id.pb_splash_download);        pb_download.setVisibility(View.GONE);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 隐藏进度条</span>        pb_download.setOnProgressBarListener(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>);        tv_title.setText(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"版本更新"</span>);        TextView tv_content = (TextView) window.findViewById(R.id.tv_content);        tv_content.setMovementMethod(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> ScrollingMovementMethod());        tv_content                .setText(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"是否更新新版本?新版本的具有如下特性:1.是否更新新版本?新版本的具有如下特性 2.是否更新新版本?新版本的具有如下特性 3.是否更新新版本?新版本的具有如下特性 4.是否更新新版本?新版本的具有如下特性 5.是否更新新版本?新版本的具有如下特性 6.是否更新新版本?新版本的具有如下特性 7.是否更新新版本?新版本的具有如下特性 8.是否更新新版本?新版本的具有如下特性"</span>);        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> TextView tv_sure = (TextView) window.findViewById(R.id.tv_sure);        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> TextView tv_cancle = (TextView) window                .findViewById(R.id.tv_cancle);        tv_cancle.setText(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"取消"</span>);        tv_cancle.setOnClickListener(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> View.OnClickListener() {            <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onClick</span>(View arg0) {                loadMain();                dialog.cancel();            }        });        tv_sure.setText(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"更新"</span>);        tv_sure.setOnClickListener(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> View.OnClickListener() {            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onClick</span>(View v) {                downLoadNewApk();<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 下载新版本</span>                createFloatView();                tv_cancle.setEnabled(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>);                tv_sure.setEnabled(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>);                dialog.cancel();                loadMain();                pb_download.setVisibility(View.VISIBLE);            }        });    }    <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/**     * 新版本的下载安装     */</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">downLoadNewApk</span>() {        HttpUtils utils = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> HttpUtils();        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// parseJson.getUrl() 下载的url</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// target 本地路径</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// System.out.println(parseJson.getUrl());</span>        File file = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> File(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"/mnt/sdcard/测试.apk"</span>);        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//如果此文件已存在先删除</span>        file.delete();<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 删除文件</span>        utils.download(                <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://www.gamept.cn/d/file/game/qipai/20140627/HappyLordZZ_1.0.19_20140325_300002877528_2200139763.apk"</span>,                <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"/mnt/sdcard/测试.apk"</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> RequestCallBack<File>() {                    <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onLoading</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> total, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> current,                            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> isUploading) {                        pb_download.setVisibility(View.VISIBLE);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 设置进度的显示</span>                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> max = (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>) total;                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> progress = (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>) current;                        pb_download.setMax(max);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 设置进度条的最大值</span>                        pb_download.setProgress(progress);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 设置当前进度</span>                        pb_download2.setMax(max);                        pb_download2.setProgress(progress);                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// showNotification(max,progree);</span>                        showNotifi(max, progress);                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span>.onLoading(total, current, isUploading);                    }                    <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onSuccess</span>(ResponseInfo<File> arg0) {                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 下载成功</span>                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 在主线程中执行</span>                        Toast.makeText(getApplicationContext(), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"下载新版本成功"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)                                .show();                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 安装apk</span>                        installApk();<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 安装apk</span>                        pb_download.setVisibility(View.GONE);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 隐藏进度条</span>                        rl_notification.setVisibility(View.GONE);                    }                    <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onFailure</span>(HttpException arg0, String arg1) {                        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 下载失败</span>                        Toast.makeText(getApplicationContext(), <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"下载新版本失败"</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)                                .show();                        pb_download.setVisibility(View.GONE);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 隐藏进度条</span>                    }                });    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> NumberProgressBar pb_download2;    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> RelativeLayout rl_notification;    <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/**     * 安装下载的新版本     */</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">installApk</span>() {        Intent intent = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Intent(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"android.intent.action.VIEW"</span>);        intent.addCategory(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"android.intent.category.DEFAULT"</span>);        String type = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"application/vnd.android.package-archive"</span>;        Uri data = Uri.fromFile(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> File(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"/mnt/sdcard/测试.apk"</span>));        intent.setDataAndType(data, type);        startActivityForResult(intent, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);    }    <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onActivityResult</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> requestCode, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> resultCode, Intent data) {        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 如果用户取消更新apk,那么直接进入主界面</span>        loadMain();        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">super</span>.onActivityResult(requestCode, resultCode, data);    }    <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/**     *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box;"> @param</span> jsonString     *            url的json数据     *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box;"> @return</span> url信息封装对象     *<span class="hljs-javadoctag" style="color: rgb(102, 0, 102); box-sizing: border-box;"> @throws</span> JSONException     */</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">protected</span> VersionBean <span class="hljs-title" style="box-sizing: border-box;">parseJson</span>(StringBuilder jsonString)            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">throws</span> JSONException {        VersionBean bean = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> VersionBean();        JSONObject jsonObj;        jsonObj = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> JSONObject(jsonString + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">""</span>);        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> versionCode = jsonObj.getInt(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"version"</span>);        String url = jsonObj.getString(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"url"</span>);        String desc = jsonObj.getString(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"desc"</span>);        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 封装结果数据</span>        bean.setDesc(desc);        bean.setUrl(url);        bean.setVersionCode(versionCode);        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> bean;    }    <span class="hljs-javadoc" style="color: rgb(136, 0, 0); box-sizing: border-box;">/**     * 初始化界面     */</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">initView</span>() {        setContentView(R.layout.activity_main);        rl_root = (RelativeLayout) findViewById(R.id.rl_splash_root);        tv_versionName = (TextView) findViewById(R.id.tv_splash_version_name);    }    <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onProgressChange</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> current, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> max) {        pb_download.setProgress(current);        pb_download2.setProgress(current);    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">createFloatView</span>() {        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> WindowManager.LayoutParams wmParams = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> WindowManager.LayoutParams();        getApplication();        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> WindowManager mWindowManager = (WindowManager) getApplication()                .getSystemService(Context.WINDOW_SERVICE);        wmParams.type = LayoutParams.TYPE_PHONE;        wmParams.format = PixelFormat.RGBA_8888;        wmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;        wmParams.gravity = Gravity.LEFT | Gravity.TOP;        wmParams.x = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;        wmParams.y = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;        wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;        wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;        LayoutInflater inflater = LayoutInflater.from(getApplication());        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> View mFloatLayout = inflater.inflate(                R.layout.activity_notification, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>);        mWindowManager.addView(mFloatLayout, wmParams);        rl_notification = (RelativeLayout) mFloatLayout                .findViewById(R.id.rl_notification);        pb_download2 = (NumberProgressBar) mFloatLayout                .findViewById(R.id.pb_download);        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// TextView tv_name = (TextView)</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// mFloatLayout.findViewById(R.id.tv_name);</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// TextView tv_time = (TextView)</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// mFloatLayout.findViewById(R.id.tv_time);</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// ImageView iv_icon = (ImageView)</span>        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// mFloatLayout.findViewById(R.id.iv_icon);// 系统显示的通知图片</span>        mFloatLayout.measure(View.MeasureSpec.makeMeasureSpec(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>,                View.MeasureSpec.UNSPECIFIED), View.MeasureSpec                .makeMeasureSpec(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, View.MeasureSpec.UNSPECIFIED));        rl_notification.setOnTouchListener(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> OnTouchListener() {            <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> <span class="hljs-title" style="box-sizing: border-box;">onTouch</span>(View v, MotionEvent event) {                wmParams.x = (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>) event.getRawX()                        - rl_notification.getMeasuredWidth() / <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>;                wmParams.y = (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span>) event.getRawY()                        - rl_notification.getMeasuredHeight() / <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> - <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">25</span>;                mWindowManager.updateViewLayout(mFloatLayout, wmParams);                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>;            }        });    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">showNotification</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> total, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> current) {        mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);        mBuilder = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Notification.Builder(SplashActivity.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>);        LayoutInflater inflater = LayoutInflater.from(getApplication());        View view = inflater.inflate(R.layout.activity_notification, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>);        mBuilder.setContentTitle(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"这是测试"</span>).setContentText(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"下载中..."</span>)                .setSmallIcon(R.drawable.app_icon);        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Thread(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Runnable() {            <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@SuppressLint</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"NewApi"</span>)            <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">run</span>() {                mBuilder.setProgress(total, current, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>);                mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (current / total == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) {                    mNotificationManager.cancel(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);                }            }        }).start();    }    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">showNotifi</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> total, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">final</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> current) {        NotificationManager notiManage;        Notification note;        mBuilder = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Notification.Builder(SplashActivity.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>);        notiManage = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);        note = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Notification();        note.flags = Notification.FLAG_AUTO_CANCEL;        RemoteViews contentView = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> RemoteViews(getPackageName(),                R.layout.activity_notifi);        contentView.setTextViewText(R.id.notificationTitle, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"这是测试"</span>);        String str_progress =current*<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>/total+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"%"</span>;         contentView.setTextViewText(R.id.notificationPercent, str_progress);        contentView.setProgressBar(R.id.notificationProgress, total, current,                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>);        note.contentView = contentView;        note.tickerText = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"正在下载"</span>;        note.icon = R.drawable.app_icon;        PendingIntent p = PendingIntent.getActivity(SplashActivity.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>,                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Intent(Intent.ACTION_VIEW), <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 这个非要不可。</span>        note.contentIntent = p;        notiManage.notify(NOTIFICATION_ID, note);        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (current / total == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>) {            notiManage.cancelAll();        }    }}</code>
0 0
原创粉丝点击