下载App

public class XiaActivity extends Activity {

  

//网络路径

  private String path="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";

   

 List<XiaBean> list =new ArrayList<>();

    private ListView lv;
    private  String   url1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.xiazai_xml);

//找空件     

initView();

//解析       

 getServerDat();

    
    }


    private void getServerDat() {
        AsyncHttpClient client =new AsyncHttpClient();
        client.get(XiaActivity.this, path, new TextHttpResponseHandler() {
            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {


            }


            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {


                Log.i("xxx", responseString);

//原生态解析获取对象                

JSONObject jsonObject = null;

                try {
                    jsonObject = new JSONObject(responseString);
                    JSONArray jsonArray = jsonObject.getJSONArray("app");
                    for(int i=0;i<jsonArray.length();i++){
                        JSONObject object = jsonArray.optJSONObject(i);
                        Gson g1=new Gson();
                        XiaBean bean  = g1.fromJson(object.toString(), XiaBean.class);
                        Log.i("llll",bean.toString());
                        list.add(bean);
                       
                    }
                    lv.setAdapter(new MyList());
                } catch (Exception e) {
                }
            }
        });


    }


//进行设配器

    class MyList extends BaseAdapter {


        @Override
        public int getCount() {
            return list.size();
        }


        @Override
        public Object getItem(int position) {
            return list.get(position);
        }


        @Override
        public long getItemId(int position) {
            return position;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            convertView =View.inflate(XiaActivity.this,R.layout.xia_lv_text,null);
            TextView text = (TextView) convertView.findViewById(R.id.c_l_name);
           Button buttom = (Button) convertView.findViewById(R.id.c_l_button);
            text.setText(list.get(position).name);
            buttom.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
       url1 = list.get(position).url;                  

  

  download();

                }
            });
            return convertView;
        }
    }
    private void initView() {
        lv = (ListView) findViewById(R.id.c_x_lv);




    }
    //下载
    private void download() {
        final String[] items = {"wifi", "手机流量"};
        //参数-1 默认被选中的position
        new android.app.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
                        showChoiseDialog();
                        break;
                    case 1:
                        //手机流量下提醒用户
                        boolean mobile = MyNexTO.isNext(XiaActivity.this);
                        if (mobile) {
                            Toast.makeText(XiaActivity.this, "现在未使用wifi,将耗用手机流量", Toast.LENGTH_SHORT).show();
                            Intent wifiSettingsIntent = new Intent("android.settings.WIFI_SETTINGS");
                            startActivity(wifiSettingsIntent);
                        }


                        break;
                }
                dialog.dismiss();
            }
        }).show();
    }








    //获取版本名称
    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;


    }


    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;
    }




    private void showChoiseDialog() {
        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();


            }
        });
        builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        dialog = builder.create();
        dialog.setCanceledOnTouchOutside(false);
        dialog.show();
    }




    private void downLoadApk() {
        //String url = "http://192.168.190.1:8080/08web/app.apk";


        RequestParams params = new RequestParams(url1);
        //自定义保存路径 Environment.getExternalStorageDirectory() sdcard 根目录


        params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/app/");
        //自动为文件命令
        params.setAutoRename(true);


        x.http().post(params, new Callback.ProgressCallback<File>() {


            private ProgressDialog prog;


            //网络请求成功时回调
            @Override
            public void onSuccess(File result) {
                Toast.makeText(XiaActivity.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(DownActivity.this, "安装成功", Toast.LENGTH_SHORT).show();
                prog.dismiss();
            }


            //网络请求错误时回调
            @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() {
                prog=new ProgressDialog(XiaActivity.this);
                prog.setTitle("正在下载");
                prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                prog.setProgress(0);
                prog.show();
            }




            //下载的时候不断回调的方法
            @Override
            public void onLoading(long total, long current, boolean isDownloading) {
                //文件总大小和当前进度
                prog.setProgress((int) current);
                prog.setMax((int) total);


            }
        });
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值