- 浏览: 422916 次
- 性别:
文章分类
最新评论
-
wrw_ahut:
你这个怎么停下来?怎么跳转activity
Android启动界面实现 -
huiqoo:
高仿UC半透明MENU菜单(有图有真相) -
wenzhixin:
多谢分享~
Android启动界面实现 -
orange9711:
学习学习
Android启动界面实现 -
qinweiping:
问下楼主 好像这个反编译 只能看到程序的主体结构吧 还是和源程 ...
APK反编译利器Apktool下载及用法介绍
package com.hiyo.game.pdk.tool; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.util.Log; import android.webkit.URLUtil; import com.hiyo.game.pdk.activity.R; /** * Android AutoUpdate. * * lazybone/2010.08.20 * * 1.Set apkUrl. * * 2.check(). * * 3.add delFile() method in resume()\onPause(). */ public class MyAutoUpdate { public Activity activity = null; public int versionCode = 0; public String versionName = ""; private static final String TAG = "AutoUpdate"; private String currentFilePath = ""; private String currentTempFilePath = ""; private String fileEx = ""; private String fileNa = ""; private String strURL = "http://127.0.0.1:81/ApiDemos.apk"; private ProgressDialog dialog; public MyAutoUpdate(Activity activity) { this.activity = activity; getCurrentVersion(); } public void check() { if (isNetworkAvailable(this.activity) == false) { return; } if (true) {// Check version. showUpdateDialog(); } } public static boolean isNetworkAvailable(Context ctx) { try { ConnectivityManager cm = (ConnectivityManager) ctx .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = cm.getActiveNetworkInfo(); return (info != null && info.isConnected()); } catch (Exception e) { e.printStackTrace(); return false; } } public void showUpdateDialog() { @SuppressWarnings("unused") AlertDialog alert = new AlertDialog.Builder(this.activity) .setTitle("Title") .setIcon(R.drawable.icon) .setMessage("Update or not?") .setPositiveButton("Update", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { downloadTheFile(strURL); showWaitDialog(); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).show(); } public void showWaitDialog() { dialog = new ProgressDialog(activity); dialog.setMessage("Waitting for update..."); dialog.setIndeterminate(true); dialog.setCancelable(true); dialog.show(); } public void getCurrentVersion() { try { PackageInfo info = activity.getPackageManager().getPackageInfo( activity.getPackageName(), 0); this.versionCode = info.versionCode; this.versionName = info.versionName; } catch (NameNotFoundException e) { e.printStackTrace(); } } private void downloadTheFile(final String strPath) { fileEx = strURL.substring(strURL.lastIndexOf(".") + 1, strURL.length()) .toLowerCase(); fileNa = strURL.substring(strURL.lastIndexOf("/") + 1, strURL.lastIndexOf(".")); try { if (strPath.equals(currentFilePath)) { doDownloadTheFile(strPath); } currentFilePath = strPath; Runnable r = new Runnable() { public void run() { try { doDownloadTheFile(strPath); } catch (Exception e) { Log.e(TAG, e.getMessage(), e); } } }; new Thread(r).start(); } catch (Exception e) { e.printStackTrace(); } } private void doDownloadTheFile(String strPath) throws Exception { Log.i(TAG, "getDataSource()"); if (!URLUtil.isNetworkUrl(strPath)) { Log.i(TAG, "getDataSource() It's a wrong URL!"); } else { URL myURL = new URL(strPath); URLConnection conn = myURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); if (is == null) { throw new RuntimeException("stream is null"); } File myTempFile = File.createTempFile(fileNa, "." + fileEx); currentTempFilePath = myTempFile.getAbsolutePath(); FileOutputStream fos = new FileOutputStream(myTempFile); byte buf[] = new byte[128]; do { int numread = is.read(buf); if (numread <= 0) { break; } fos.write(buf, 0, numread); } while (true); Log.i(TAG, "getDataSource() Download ok..."); dialog.cancel(); dialog.dismiss(); openFile(myTempFile); try { is.close(); } catch (Exception ex) { Log.e(TAG, "getDataSource() error: " + ex.getMessage(), ex); } } } private void openFile(File f) { Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); String type = getMIMEType(f); intent.setDataAndType(Uri.fromFile(f), type); activity.startActivity(intent); } public void delFile() { Log.i(TAG, "The TempFile(" + currentTempFilePath + ") was deleted."); File myFile = new File(currentTempFilePath); if (myFile.exists()) { myFile.delete(); } } private String getMIMEType(File f) { String type = ""; String fName = f.getName(); String end = fName .substring(fName.lastIndexOf(".") + 1, fName.length()) .toLowerCase(); if (end.equals("m4a") || end.equals("mp3") || end.equals("mid") || end.equals("xmf") || end.equals("ogg") || end.equals("wav")) { type = "audio"; } else if (end.equals("3gp") || end.equals("mp4")) { type = "video"; } else if (end.equals("jpg") || end.equals("gif") || end.equals("png") || end.equals("jpeg") || end.equals("bmp")) { type = "image"; } else if (end.equals("apk")) { type = "application/vnd.android.package-archive"; } else { type = "*"; } if (end.equals("apk")) { } else { type += "/*"; } return type; } }
本文转载自:Android版本检测\自动更新 http://www.eoeandroid.com/thread-117764-1-1.html
发表评论
-
解决Android SDK Manager国内下载缓慢的问题
2014-10-26 23:01 698点击Android SDK Manager菜单Tools-& ... -
Android Launcher一些资源
2012-01-10 16:03 1592棒槌网@Android相关文章推荐: rjJ-ZRs\ An ... -
卡刷rom固件update.zip的制作教程
2011-12-29 19:44 19270对于第三方ROM来讲,通常都包括两部分,一个recover ... -
APK反编译利器Apktool下载及用法介绍
2011-12-29 19:40 6515近期在研究rom过程中发现一个非常不错的软件,可以帮助我们把A ... -
制作rom利器bootimg
2011-12-29 19:22 2829打包: bootimg ... -
高仿UC半透明MENU菜单(有图有真相)
2011-11-13 15:55 1957转载自:http://www.eoeandroid.com/ ... -
Android启动界面实现
2011-11-13 15:39 6793转载自:http://www.eoeandroid.com/t ... -
获取本机外网IP地址(External IP Address)
2010-12-15 22:45 6802import java.io.IOException; ... -
Red5+OpenOffice+OpenMeetings架设视频会议网络
2009-07-01 09:57 2248因工作需要,这两天弄了一个视频会议服务器。采用了flash流媒 ... -
J2EE or J2SE? JNDI works with both
2009-05-11 16:21 1522J2EE or J2SE? JNDI works with b ... -
脚本启动Java应用程序(Windows/Linux)
2009-05-08 16:40 36941、新建文件夹myapp,放你的应用; 2、将你的程序 ... -
破解Java程序
2007-12-13 17:36 1898第一步是定位,这也是 ... -
WebSphere 应用服务器环境搭建实践指南
2007-08-22 18:20 5226Dan Wu (wdan@cn.ibm.com), 高级信息工 ... -
beanutils研究心得
2007-01-23 15:47 2159Beanutils用了魔术般的反射技术,实现了很多夸张有用的功 ... -
apache-common功能列表
2007-01-23 15:16 4992... -
Apache Commons工具集简介[转载]
2007-01-21 02:20 5607js 代码 <script ... -
利用servlet生成简单的验证码
2007-01-21 01:47 1617在web.xml配置: 代码 < ... -
实战篇:设计自己的Annotation
2007-01-21 01:44 1395From:http://lighter.iteye.com 第 ... -
JSTL 入门: 表达式语言
2007-01-15 11:23 1413JSP 标准标记库(JSP Stand ... -
extremeTable介绍
2007-01-10 11:14 46091、何为 extremeTable,又一个开源taglib e ...
相关推荐
自动更新功能需要访问网络和存储权限。在Android 6.0及以上版本,需要在运行时动态请求这些权限。 7. **静默更新**: 对于不想打扰用户的场景,开发者可以实现静默更新,即在后台下载并安装新版本,但需要处理好...
这个名为"Android项目版本检测自动更新.rar"的压缩包文件很可能包含一个完整的Android项目示例,用于实现这样的功能。让我们详细探讨一下这个话题。 1. **版本检测**:在Android应用中,通常会在启动时或者在后台...
在Android应用开发中,自动检测...通过以上步骤,Android应用能够实现自动检测服务器上的版本更新,下载并提示用户安装新版本,从而保持应用的最新状态。这不仅提高了用户体验,也有助于开发者及时推送修复和新特性。
在Android平台上,实现应用的版本自动更新是一项重要的功能,它能确保用户始终使用到最新、最安全的软件版本。这个过程通常涉及到服务器端的更新管理、客户端的检测和下载以及安装流程。以下将详细讲解这一过程中的...
Android-版本检测自动更新.zip
这个压缩包“安卓Android源码——版本检测自动更新.zip”很可能包含了一个实现这一功能的示例代码或库。下面我们将深入探讨相关的知识点。 1. **版本检测**:版本检测通常通过向服务器发送一个请求来完成,询问是否...
本资源“Android应用源码版本检测自动更新.zip”包含了一套完整的源码实现,帮助开发者理解如何在Android应用中集成这一功能。以下是关于这个主题的详细解释: 1. **版本检测**:版本检测通常通过网络请求实现,...
Android-版本检测自动更新(源码).zip
这个名为"基于Android的版本检测自动更新.zip"的压缩包文件,显然是一个教学资源,旨在帮助初学者或者毕业生了解如何在Android应用程序中实现这一功能。我们可以从以下几个方面来深入探讨这个知识点: 1. **版本...
在Android应用开发中,自动更新功能是至关重要的,它能够帮助开发者及时修复程序中的错误,增加新特性,并确保用户始终使用的是最新版本的应用。"Android 应用软件自动更新源码"是一个示例项目,旨在教授如何在...
在Android应用开发中,定期检查并自动更新应用程序是提高用户体验和确保软件安全的重要一环。本项目关注的是如何实现这样一个功能,即“android自动检测版本并更新下载,带进度条服务端解析xml”。这个功能涉及到...
在Android应用开发中,实现客户端自动检测更新的功能是一项常见的需求,可以提高用户体验并确保用户始终运行的是最新版本的软件。以下是对标题、描述和标签所涉及知识点的详细说明: 1. **Android 客户端自动检测...
这个压缩包文件"版本检测自动更新_Android.rar"很可能包含了实现这一功能的相关代码、配置文件和资源。以下是对这一主题的详细说明: 1. **版本检测**:版本检测通常涉及到服务器端和客户端的交互。服务器端存储着...
实现 android7、8 以上版本自动更新app 程序,仅供参考。
这个项目为学习Android应用开发提供了实践平台,通过实现版本检测和自动更新功能,学生可以深入理解Android的网络编程、文件操作、用户界面设计、多线程和权限管理等多个核心知识点。同时,它也提醒我们,良好的用户...
这个压缩包文件"安卓Android源码——版本检测自动更新.rar"很可能是包含了实现这一功能的源代码。下面将详细介绍这个过程中的关键知识点。 1. **版本检测**: - **服务器端**:通常,应用会连接到一个服务器,该...
9. **错误处理**:在设计自动更新功能时,还需要考虑网络异常、服务器响应错误等情况,确保应用在遇到问题时能适当地通知用户或重试。 总的来说,实现Android应用的自动检测更新功能需要综合运用网络编程、数据解析...
这个"版本检测自动更新.zip"文件可能包含一个实现这一功能的示例代码或工具集。下面,我们将深入探讨这个主题,了解如何在Android应用程序中实现版本检测和自动更新。 1. **版本检测**:在Android应用中,版本检测...