版本更新
来源:互联网 发布:linux 培训 编辑:程序博客网 时间:2024/06/05 08:55
package com.exbawei.liteli.xutils;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.net.Uri;import android.os.Environment;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.TextView;import android.widget.Toast;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import org.xutils.x;import java.io.File;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv= (TextView) findViewById(R.id.tv); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { x.Ext.init(getApplication()); x.http().get(new RequestParams("http://mapp.qzone.qq.com/cgi-bin/mapp/mapp_subcatelist_qq?yyb_cateid=-10&categoryName=%E8%85%BE%E8%AE%AF%E8%BD%AF%E4%BB%B6&pageNo=1&pageSize=20&type=app&platform=touch&network_type=unknown&resolution=412x732"), new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { try { JSONObject jsonObject = new JSONObject(result); JSONArray jsonArray = jsonObject.getJSONArray("app"); JSONObject jo = jsonArray.getJSONObject(0); String url = jo.getString("url"); String version = jo.getString("versionName"); Log.i("xxx", "url:" + url + ",versionName:" + version); String versionName = getVersionName(); System.out.println(versionName); /*if (version.compareTo(versionName) > 0) { showChoiseDialog(url); }*/ showChoiseDialog(url); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } }); } /** * 显示更新选择对话框 * * @param url */ private void showChoiseDialog(final String url) { android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); android.app.AlertDialog dialog = null; builder.setTitle("版本更新"); builder.setMessage("检测到新版本,是否下载更新?"); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { downLoadApk(url); } }); builder.setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); dialog = builder.create(); dialog.setCanceledOnTouchOutside(false); dialog.show(); } /** * 从服务器中下载APK */ private void downLoadApk(String path) { RequestParams params = new RequestParams(path); //自定义保存路径 Environment.getExternalStorageDirectory() sdcard 根目录 params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/app/"); //自动为文件命令 params.setAutoRename(true); x.http().post(params, new Callback.ProgressCallback<File>() { //网络请求成功时回调 @Override public void onSuccess(File result) { Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show(); //apk下载完成后 调用系统的安装方法 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive"); startActivity(intent); Toast.makeText(MainActivity.this, "安装成功", Toast.LENGTH_SHORT).show(); } //网络请求错误时回调 @Override public void onError(Throwable ex, boolean isOnCallback) { } //网络请求取消的时候回调 @Override public void onCancelled(CancelledException cex) { } //网络请求完成的时候回调 @Override public void onFinished() { } //网络请求之前回调 @Override public void onWaiting() { } //网络请求开始的时候回调 @Override public void onStarted() { } //下载的时候不断回调的方法 @Override public void onLoading(long total, long current, boolean isDownloading) { //文件总大小和当前进度 Log.i("xxx", total + "," + current); } }); } /** * 获取版本名称 */ private String getVersionName() { // 获取packagemanager的实例 PackageManager packageManager = getPackageManager(); // getPackageName()是你当前类的包名,0代表是获取版本信息 PackageInfo info = null; try { info = packageManager.getPackageInfo(getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } String versionName = info.versionName; return versionName; } /** * 获取版本号 * * @return * @throws Exception */ public String getVersionCode() { // 获取packagemanager的实例 PackageManager packageManager = getPackageManager(); // getPackageName()是你当前类的包名,0代表是获取版本信息 PackageInfo packInfo = null; try { packInfo = packageManager.getPackageInfo(getPackageName(), 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } String versionCode = String.valueOf(packInfo.versionCode); return versionCode; }}<uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>compile 'org.xutils:xutils:3.5.0'compile 'org.jsoup:jsoup:1.9.2'
阅读全文
0 0
- 版本更新
- //版本更新
- 版本更新
- 更新版本
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 版本更新
- 利用 ApsaraDB For SQL Server各版本高效而低廉地实现关键业务需求
- Swift 中的代理 (Delegate)
- 版本更新
- 【spark】Exception 异常处理,随笔记录
- 2017秋招-技术岗-谷歌(2轮)
- 版本更新
- codeforces 764A Taymyr is calling you
- windows下的python+ opencv安装攻略
- 前端开发【第4篇:JavaScript基础】
- 文章标题
- 前端安全问题
- RFID技术引领未来智能交通
- ubuntu python import caffe出现错误解决方法
- 工作中关于浏览器相关知识的总结