- 浏览: 393392 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (397)
- 随笔 (2)
- java (44)
- android (129)
- html + css (18)
- php (35)
- linux (2)
- html5技术/游戏 (3)
- 其他 (30)
- MAC (2)
- IOS (11)
- mongoDB (0)
- js + jquery (29)
- SQL (5)
- ecshop (2)
- jsp (1)
- mybatis (1)
- 推荐 (0)
- 网络推广 (1)
- jquery mobiles (7)
- Sencha Tcouch (11)
- case (2)
- joomla (1)
- cocos2d (1)
- AndEngine (1)
- 错误异常报错 (1)
- 第三方&二次开发 (5)
- cordova (5)
- swift (81)
- mysql (1)
- zepto (2)
- 常用代码 (1)
最新评论
-
wu1238:
2c2ab98030fc767cf89051f369a97c5 ...
Swift -> UILable 设置内边距 UIEdgeInsets , UITextField 设置内边距
package t1.com; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import org.apache.http.client.HttpClient; import android.R.anim; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; public class T1Activity extends Activity { protected static final int UPDATA_CLIENT = 0; protected static final int CHECK_UPDATE = 1; protected static final int DOWN_ERROR = 0; /** Called when the activity is first created. */ private int globalVersion = 3; private int serverVersion; private String serverVersionUrl = "http://cloud.broadlink.com.cn/2/switch_version.html"; private String downLoadApkUrl = "http://cloud.broadlink.com.cn/2/t1.apk"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ////检测更新------------------------- new Thread(new Runnable() { public void run() { try { serverVersion = 33; Message msg = new Message(); msg.what = CHECK_UPDATE; handler.sendMessage(msg); } catch (NumberFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); } public void showUpdateDialog() { @SuppressWarnings("unused") AlertDialog alert = new AlertDialog.Builder(T1Activity.this).setTitle("更新提示") .setIcon(android.R.drawable.ic_dialog_info).setMessage("检测到新的版本,请下载更新").setPositiveButton("下载",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); //关闭对话框 downLoadApk(); System.out.println("start update"); } }).show(); } protected void downLoadApk() { final ProgressDialog pd; //进度条对话框 pd = new ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setMessage("正在下载更新"); pd.show(); new Thread(){ @Override public void run() { try { File file = getFileFromServer(downLoadApkUrl, pd); sleep(3000); installApk(file); pd.dismiss(); //结束掉进度条对话框 } catch (Exception e) { pd.dismiss(); Message msg = new Message(); msg.what = DOWN_ERROR; handler.sendMessage(msg); e.printStackTrace(); } }}.start(); } public static File getFileFromServer(String path, ProgressDialog pd) throws Exception{ //如果相等的话表示当前的sdcard挂载在手机上并且是可用的 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); //获取到文件的大小 pd.setMax(conn.getContentLength()); InputStream is = conn.getInputStream(); File file = new File(Environment.getExternalStorageDirectory(), "updata.apk"); FileOutputStream fos = new FileOutputStream(file); BufferedInputStream bis = new BufferedInputStream(is); byte[] buffer = new byte[1024]; int len ; int total=0; while((len =bis.read(buffer))!=-1){ fos.write(buffer, 0, len); total+= len; //获取当前下载量 pd.setProgress(total); } fos.close(); bis.close(); is.close(); return file; } else{ return null; } } //安装apk protected void installApk(File file) { Intent intent = new Intent(); //执行动作 intent.setAction(Intent.ACTION_VIEW); //执行的数据类型 intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); startActivity(intent); } Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case DOWN_ERROR: //下载apk失败 Toast.makeText(getApplicationContext(), "下载新版本失败", 1).show(); break; case CHECK_UPDATE: //下载apk失败 if(serverVersion == 0) { serverVersion = globalVersion; } if(serverVersion != globalVersion){ showUpdateDialog(); } break; } } }; }
发表评论
-
android -> ImageButton 内部图片 padding
2020-04-09 12:00 365先给 ImageButton 设置属性 andr ... -
android -> 设置 全局 字体样式
2017-05-05 11:11 725首页在AndroidManifest.xml中 ap ... -
android -> 背景background - shape的使用
2017-05-04 12:09 856shape用于设定形状,可以在selector, ... -
android -> 只保留一边 的 边框 border
2017-05-03 09:05 1027设置background <layer-li ... -
android -> 在布局中动态添加view的两种方法
2017-04-29 19:48 960转自 : http://b ... -
android -> 修改 version 版本
2017-03-28 15:33 401除了在 manifest.xml 里面 <?xml ... -
android -> viewPaer 页面滑动
2017-03-27 17:23 507MainActivity.java public ... -
android -> 获取系统输入法列表/已勾选/默认
2017-03-26 13:02 1165参考: http://www.aichengxu. ... -
android -> android 一个 textview 设置不同的字体大小和颜色
2017-03-24 00:05 859参考: http://blog.csdn.net/fengy ... -
android -> 查看 签名 的 信息 包括 有效期
2017-03-23 11:27 1015C:\Windows\system32>D ... -
android -> 父控件 遍历 子 控件
2017-03-21 21:03 690布局文件: <LinearLayout an ... -
android -> 动画类( Animation)
2017-03-19 11:01 501参考: https://my.oschina.net/u/ ... -
android -> TextView setTextSize(int unit, float size) -- px,sp,dip
2017-03-18 23:35 1024TextView setTextSize(int unit, ... -
android -> canvas学习3 (跟随手势画直线)
2017-03-10 17:17 925DiyView.java package com ... -
android -> canvas学习2(动态画图)
2017-03-10 16:31 588关键字 invalidate() 重新执行onDra ... -
android -> canvas学习1
2017-03-10 14:39 462参考: http://blog.csdn.net/lee5 ... -
android -> 九宫格 划直线解锁
2017-03-09 22:53 414来自 : http://blog.csdn.net/ ... -
android -> 按钮 圆角 & 边框 & 渐变
2017-02-14 16:32 875参考: http://blog.csdn.net/l ... -
android -> 资源文件 反编译
2017-02-14 15:30 345官方网站 : https://ibotpeaches ... -
android -> 按钮双击
2017-02-12 11:48 442long space_last_click_time; ...
相关推荐
Android一个apk 启动另外一个apk文件
Gen_Signature_Android.apk
android ping apkandroid ping apkandroid ping apkandroid ping apkandroid ping apk
Android 更新下载apk 安装apk 打开apk
Android apk发布到google play上检测google play的新版本,并且下载更新
android安装apk位置选择
Xrelay_4.1.7_Android.apk.1
如果你在寻找android上面的apk,这就是你最好的选择
yyg_Android20220307.apk
和https://blog.csdn.net/wzj_what_why_how/article/details/108979981配套
androidAPK自动更新亲测在android 10.0、9.0下的华为机子没问题,太穷了所以收取5积分,该项目里面也包含自动获取授权
Android 获取apk声明的权限列表
一台Android设备作为服务器,给另一台设备升级apk,通过wifi的方式
载一个apk文件 然后当你下载完成后 按钮的文字发生改变 变成点击安装 然后安装完成之后 变成打开 1分这个要求不过分吧 尴尬
android的apk反编译,适用于对软件广告的去除和手机游戏的经验金币的修改等
Android_apk并签名
用于unity Android 平台做apk自动更新
android10 apk签名文件,签名后可以获取系统权限
iPerf是一个网络性能测试工具。iPerf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。 iperf3安卓版本下载
nordic semi bluetooth ble android apk 4.3 是apk不是源码哦 no.nordicsemi.android.beacon.service.apk no.nordicsemi.android.mcp.apk no.nordicsemi.android.nrfbeacon.apk no.nordicsemi.android.nrftoolbox....