首先創建一個工程
導入XUtils3.0的依賴
compile 'org.xutils:xutils:3.3.36'
然後創建一個MyApp類在AndroidManifest.xml文件中註冊
public class MyApp extends Application{ @Override public void onCreate() { super.onCreate(); //初始化xutils3 x.Ext.init(this); //false 不影響性能 x.Ext.setDebug(true); } }導入權限
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>再寫一個網絡判斷的Utils
public class NetWorkUtils { //判斷網絡連接狀態 public static boolean isNetWorkIsAvailable(Context context) { //網絡連接管理器 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //獲取網絡信息 NetworkInfo info = connectivityManager.getActiveNetworkInfo(); if (info != null) { return true; } /* if (info.isConnected()) { return true; }*/ return false; } //判斷是否是wifi public static boolean isWifi(Context context) { //網絡連接管理器 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //獲取網絡信息 NetworkInfo info = connectivityManager.getActiveNetworkInfo(); if (info != null && info.getType() == connectivityManager.TYPE_WIFI) { return true; } return false; } //判斷是否是手機流量 public static boolean isMobile(Context context) { //網絡連接管理器 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //獲取網絡信息 NetworkInfo info = connectivityManager.getActiveNetworkInfo(); if (info != null && info.getType() == connectivityManager.TYPE_MOBILE) { return true; } return false; } }在MainActivity
boolean workIsAvailable = NetWorkUtils.isNetWorkIsAvailable(MainActivity.this); if (!workIsAvailable) { Toast.makeText(MainActivity.this, "網絡未連接,請設置網絡", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); startActivity(intent); } else { //連接成功下載 Toast.makeText(MainActivity.this, "網絡連接成功", Toast.LENGTH_SHORT).show(); download(); }
//下載 private void download() { final String[] items = {"wifi", "手機流量"}; new AlertDialog.Builder(this).setTitle("網絡選擇").setIcon(R.mipmap.ic_launcher).setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: //wifi下 下載apk downloadApk(); break; case 1: //手機流量下提醒用戶 boolean mobile = NetWorkUtils.isMobile(MainActivity.this); if (mobile) { Toast.makeText(MainActivity.this, "現在未使用wifi,將耗用手機流量", Toast.LENGTH_SHORT).show(); Intent wifiSettingsIntent = new Intent("android.settings.WIFI_SETTINGS"); startActivity(wifiSettingsIntent); } dialog.dismiss(); break; } dialog.dismiss(); } }).show(); }
//下載apk private void downloadApk() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("版本更新"); builder.setMessage("現在檢測到新版本,是否更新?"); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { updateApk(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create(); builder.show(); } //版本更新 private void updateApk() { String url = "http://169.254.249.24:8080/08web/app.apk"; RequestParams params = new RequestParams(url); //保存到sdcard params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/bawei/"); //自動文件命令 params.setAutoRename(true); //下載 x.http().post(params, new Callback.ProgressCallback<File>() { @Override public void onWaiting() { } @Override public void onStarted() { } @Override public void onLoading(long total, long current, boolean isDownloading) { } @Override public void onSuccess(File result) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(result), "application/vnd.android.package-archive"); startActivity(intent); } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } });