版本更新: Android网络编程 ,解析json,Handler,线程。
注: 耗时操作
代码:Get请求
URL url = new URL("http://ip:8080/update.json"); //URL
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET"); // 请求方法
conn.setConnectTimeout(5000) ; // 连接超时
conn.setReadTimeout(5000); // 响应超时, 虽连接上了,但服务器迟迟不给响应
conn.connect(); // 连接服务器
int responseCode = conn.getResponseCode(); // 获取响应码,返回码为200表示正常,
//当下载资源的某一部分时返回的是206
InputStream inputStream = conn.getInputStream(); //获取服务端返回的结果
解析json
JSONObject jo = new JSONObject(result); //根据result得到一个Json对象,result为服务端返回的.json文件
mVersionName = jo.getString("versionName"); //获取Json中具体值
mVersionCode = jo.getInt("versionCode");
mDesc = jo.getString("description");
mDownloadUrl = jo.getString("downloadUrl");
判断是否有更新
if (mVersionCode > getVersionCode()) {
//更新软件并下载
//xUtils包的使用
}
app安装:主要是跳转到系统安装界面进行安装
action: Intent.ACTION_VIEW = "android.intent.action.VIEW"--------Display the data to the user 启动activity用的
data: URI.fromFile(new File(path)) ----------- app文件
type:"application/vnd.android.package-archive" ---------- 是文件类型,具体为APK的互联网媒体类型
代码:
// 跳转到系统安装页面
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setDataAndType(Uri.fromFile(path),"application/vnd.android.package-archive");
startActivityForResult(intent, 0);
app卸载:
删除一个app所对应的intent-filter
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DELETE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
app启动
PackageManager pm = getPackageManager();
// 获取手机中所有具有启动能力的activities,做桌面app时运用
// Intent intent = new Intent();
// intent.setAction(Intent.ACTION_MAIN);
// intent.addCategory(Intent.CATEGORY_LAUNCHER);
// List<ResolveInfo> activities = pm.queryIntentActivities(intent,
// PackageManager.GET_INTENT_FILTERS);
Intent intent = pm.getLaunchIntentForPackage(mAppInfo.getPackName());
if (intent != null) {
startActivity(intent);
dismissPopupWindow();
}
app分享
代码:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, 推荐具体内容);
startActivity(intent);
注:
1、ByteArrayOutputStream在网络通信的使用:
代码:
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
String result = out.toString();
in.close();
out.close();