- 浏览: 413458 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (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 472先给 ImageButton 设置属性 andr ... -
android -> 设置 全局 字体样式
2017-05-05 11:11 770首页在AndroidManifest.xml中 ap ... -
android -> 背景background - shape的使用
2017-05-04 12:09 934shape用于设定形状,可以在selector, ... -
android -> 只保留一边 的 边框 border
2017-05-03 09:05 1094设置background <layer-li ... -
android -> 在布局中动态添加view的两种方法
2017-04-29 19:48 1024转自 : http://b ... -
android -> 修改 version 版本
2017-03-28 15:33 442除了在 manifest.xml 里面 <?xml ... -
android -> viewPaer 页面滑动
2017-03-27 17:23 579MainActivity.java public ... -
android -> 获取系统输入法列表/已勾选/默认
2017-03-26 13:02 1226参考: http://www.aichengxu. ... -
android -> android 一个 textview 设置不同的字体大小和颜色
2017-03-24 00:05 918参考: http://blog.csdn.net/fengy ... -
android -> 查看 签名 的 信息 包括 有效期
2017-03-23 11:27 1079C:\Windows\system32>D ... -
android -> 父控件 遍历 子 控件
2017-03-21 21:03 758布局文件: <LinearLayout an ... -
android -> 动画类( Animation)
2017-03-19 11:01 562参考: https://my.oschina.net/u/ ... -
android -> TextView setTextSize(int unit, float size) -- px,sp,dip
2017-03-18 23:35 1097TextView setTextSize(int unit, ... -
android -> canvas学习3 (跟随手势画直线)
2017-03-10 17:17 960DiyView.java package com ... -
android -> canvas学习2(动态画图)
2017-03-10 16:31 630关键字 invalidate() 重新执行onDra ... -
android -> canvas学习1
2017-03-10 14:39 523参考: http://blog.csdn.net/lee5 ... -
android -> 九宫格 划直线解锁
2017-03-09 22:53 467来自 : http://blog.csdn.net/ ... -
android -> 按钮 圆角 & 边框 & 渐变
2017-02-14 16:32 943参考: http://blog.csdn.net/l ... -
android -> 资源文件 反编译
2017-02-14 15:30 444官方网站 : https://ibotpeaches ... -
android -> 按钮双击
2017-02-12 11:48 497long space_last_click_time; ...
相关推荐
微信签名工具,即`Gen-Signature-android.apk`,是一个专为开发者设计的工具,用于生成和管理Android应用的签名文件。这个工具可以帮助开发者对他们的APK进行签名,以确保其能够在用户的设备上正常安装和运行。由于...
本篇文章将详细介绍如何在Android应用中实现APK的自动更新安装功能。 首先,我们需要理解Android系统如何处理APK的安装过程。当用户下载一个APK文件后,系统默认的行为是通过点击文件或使用“安装未知应用”权限来...
标题中的"apk.rar_.apk_android_android apk_apk"暗示了我们正在讨论的是一个与Android操作系统相关的APK文件,它被压缩在名为"apk.rar"的RAR格式文件中。APK是Android应用程序的主要文件格式,它包含了应用的所有...
本文将深入探讨“android-APK自动更新.rar”这一资源中涉及的关键技术点,包括如何在Android 10.0和9.0系统上实现APK的自动更新,以及自动获取权限的相关策略。 一、Android APK自动更新机制 1. Google Play服务的...
在Android系统中,APK签名是一个至关重要的过程,它确保了应用的完整性和开发者身份的验证。在Android 10中,这个过程没有本质的变化,但随着系统的更新,签名文件的作用和安全要求更加严格。本篇文章将深入探讨...
android10288.apk
`iperf_android.apk` 是专为Android设备优化的iPerf3版本,用户可以通过安装此APK在手机或平板上进行网络性能测试。以下是一些应用场景: 1. **网络诊断**:当用户感觉网络慢或者不稳定时,可以用iPerf3测试并定位...
在Android平台上,将一台设备作为服务器来为另一台设备提供apk更新是一种常见的远程部署应用程序的方法。这种方法主要利用了网络通信技术,尤其是TCP/IP协议中的Socket编程,以实现两台Android设备之间的数据传输。...
在Android平台上,一个APK应用启动另一个APK应用是一个常见的需求,这可能涉及到应用之间的交互、服务调用或者用户引导到不同的应用体验。这个过程主要依赖于Android的Intent机制,Intent是Android系统中用于组件间...
android ping apkandroid ping apkandroid ping apkandroid ping apkandroid ping apk
在Android系统中,每个应用程序(apk)都有特定的权限声明,这些权限决定了应用程序可以执行哪些操作。本篇文章将深入探讨如何获取Android APK文件声明的权限列表,这对于开发者进行应用审计、安全分析或用户理解...
rknn_yolov5_android_apk_demo
在Android应用开发中,为了确保用户始终使用最新版本并获得最佳体验,开发者有时需要实现强制更新功能。本文将深入探讨如何在Android应用中实现在弹出对话框中强制用户更新,并且支持断点续传技术,提高下载效率。 ...
2. 在项目结构中,找到`app > build > outputs > apk`目录,这里包含你的APK文件。 3. 右键点击APK文件,选择"Show in Explorer",将其在文件管理器中打开。 4. 复制APK文件到剪贴板或者直接拖放到模拟器屏幕上,...
在Android平台上,更新、下载、安装以及打开APK文件是应用程序生命周期中的常见操作。下面将详细阐述这些过程及其相关的知识点。 一、Android APK文件 APK(Android Package)是Android系统中应用程序的安装包,...
标题提到的"用于unity Android 平台做apk自动更新Jar包.zip"正是为了解决这一需求,它包含了一些关键的库文件,帮助开发者在Unity中构建apk的自动更新机制。 首先,我们来详细了解这两个重要的库文件: 1. **...
本教程将详细解释如何进行Android版本更新,包括下载新版本的APK文件以及如何在设备上安装。 一、APK 文件及其作用 APK 文件是一个包含所有必要组件的压缩包,包括代码、资源、库和应用程序的清单文件。当用户在...
5. **安装APK**:在Android 10及以上版本,由于默认禁止了非Google Play商店的安装,需要在AndroidManifest.xml中添加`<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />`权限。...
android安装apk位置选择
而在IntelliJ IDEA中,签名APK的步骤类似,路径通常是:菜单 Tools -> Android -> Export Signed APK。 签名完成后,为了提升APK的性能,还需要进行zipalign优化。zipalign是Android SDK的一部分,位于`android-sdk...