爱玺玺

爱玺玺的生活日记本。wx:lb87626

android获取网络json文件信息

package cn.jianhaozhan.activity;


import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;


import org.json.JSONException;

import org.json.JSONObject;


import cn.jianhaozhan.utils.StreamUtil;


import android.support.v7.app.ActionBarActivity;

import android.content.pm.PackageInfo;

import android.content.pm.PackageManager;

import android.content.pm.PackageManager.NameNotFoundException;

import android.os.Bundle;

import android.util.Xml;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.TextView;



public class SplashActivity extends ActionBarActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.splash_main);

        TextView tv_spalsh_versionname=(TextView) findViewById(R.id.tv_spalsh_versionname);

        tv_spalsh_versionname.setText("版本号:"+getVersionName());

        update();

    }

    /**

     * 获取当前应用版本号

     * @return

     */

    private String getVersionName(){

    //包管理者

    PackageManager pm=getPackageManager();

    //packageName 应用程序包名

    //flags 执行信息的标签,0:获取基础信息,包名,版本号,要获取的权限

    try {

//pm.getPackageInfo("cn.jianhaozhan.activity", 0);

    //getPackageName获取包名

    //info命名的其实就是个javabean

    PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0);

    //获取版本号

    String versionName = packageInfo.versionName;

    return versionName;

} catch (NameNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

    return null;

    }

    /**

     * 提醒用户版本更新

     */

    private void update(){

    new Thread(){

    private String code;

private String apkurl;

private String des;


public void run(){

    //1.1连接服务器

    try {

    //1.1.1 连接路径

URL url=new URL("http://jianhaozhan.cn/updateinfo.html");

//1.1.2获得连接对象

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

//1.1.2设置超时时间

conn.setConnectTimeout(5000);

conn.setReadTimeout(5000);

//设置请求方式

conn.setRequestMethod("GET");

//获取状态码

int responseCode = conn.getResponseCode();

if(responseCode == 200){

//连接成功,获取服务器返回的数据code:新版本的版本号,新版本的下载路径,告诉用户增加了哪些功能

System.out.println("连接成功");

//获取服务器返回的数据,得到服务器返回的流信息

InputStream inputStream = conn.getInputStream();

//将服务器返回的流信息转换成字符串

String json = StreamUtil.parseStremUitl(inputStream);

//解析json数据

JSONObject jsonObject=new JSONObject(json);

code = jsonObject.getString("code");

apkurl = jsonObject.getString("apkurl");

des = jsonObject.getString("des");

System.out.println(code+" "+apkurl+" "+des);

}else{

System.out.println("连接失败");

}

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

    }

    }.start();

    }

}


package cn.jianhaozhan.utils;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.StringWriter;


public class StreamUtil {

/**

* 将流信息转换成字符串

* @return

* @throws IOException

*/

public static String parseStremUitl(InputStream in) throws IOException {

// 读取流转字符到br,这里是将读取的流存储到br

BufferedReader br = new BufferedReader(new InputStreamReader(in));

// 上面已经已字符方式存储读取的流到br,现在写入流

//StringWriter字符串流写入,直接写入到sw

//BufferWriter是有缓冲的写入,不能一次写入

StringWriter sw = new StringWriter();

// 数据缓冲区

String str = null;

while ((str = br.readLine()) != null) {

            //写入流到sw

sw.write(str);

}

sw.close();

br.close();

//现在转换好的流就在sw里面了。

//为什么读取的不能用,因为读取的虽然是字符但还不是字符串?字符数组和字符串还是有区别的?读取流的时候不能直接转字符串?

//读取流是读取到一个内存对象中存储br,写入流也是写到一个内存对象sw中,在写入的时候转成了字符串需要的。

return sw.toString();

}

}


发表评论:

Powered By Z-BlogPHP 1.4 Deeplue Build 150101

Copyright Your WebSite.Some Rights Reserved.

蜀ICP备11021721号-5