1.xutils依賴
compile 'org.xutils:xutils:3.3.36'
2.佈局:button按鈕
<Button android:id="@+id/bt_download" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/bt_upload" android:text="下載"/>3.代碼
NetWorkUtils 工具類:
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; }else{ 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; }else{ 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; }else{ return false; } } }xutils appliction
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(true); } }記得要在清單文件註冊
AndroidManifest.xml
android:name=".app.MyApp"mainactivity
import android.content.DialogInterface; import android.content.Intent; 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.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import com.google.gson.Gson; import org.xutils.common.Callback; import org.xutils.http.RequestParams; import org.xutils.x; import java.io.File; import java.util.List; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button xiazai; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xiazai = (Button) findViewById(R.id.xiazai); xiazai.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.xiazai: 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(); } break; } } //下載 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.show(); } //版本更新 private void updateApk() { //網址可能用不了 String url = "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"; RequestParams params =new RequestParams(url); params.setCacheMaxAge(1000 * 60 * 10); x.http().get(params, new Callback.CacheCallback<String>() { private String result = null; @Override public boolean onCache(String result) { this.result = result; Toast.makeText(MainActivity.this,"走緩存",Toast.LENGTH_SHORT).show(); //默認false不走緩存 true 走緩存 過期之後就不走緩存 getGson(result); return true; } @Override public void onSuccess(String result) { if (result != null) { this.result = result; Toast.makeText(MainActivity.this,"調用",Toast.LENGTH_SHORT).show(); getGson(result); } } @Override public void onError(Throwable ex, boolean isOnCallback) { } @Override public void onCancelled(CancelledException cex) { } @Override public void onFinished() { } }); } private void getGson(String result) { String substring = result.substring(0, result.length() - 1); Gson gson=new Gson(); Bean bean = gson.fromJson(substring, Bean.class); final List<Bean.AppBean> app = bean.getApp(); final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("點擊下載"); View view=View.inflate(this,R.layout.listview,null); ListView listView = (ListView) view.findViewById(R.id.list); listView.setAdapter(new Base(this,app)); builder.setView(view); builder.setNegativeButton("後臺下載", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.show(); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { RequestParams params = new RequestParams(app.get(position).getUrl()); String s = Environment.getExternalStorageDirectory() + "/bawei/"; File file=new File(s); if (!file.exists()){ file.mkdir(); } //保存到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) { Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show(); } @Override public void onFinished() { } }); Toast.makeText(MainActivity.this,"正在下載請稍後......",Toast.LENGTH_SHORT).show(); } }); } }