- 浏览: 186800 次
- 性别:
- 来自: 浙江
-
文章分类
最新评论
现在一些物流公司支持移动设备查询,这里我简单写了个项目。
我的快递api是快递100提供的,由于支持问题,使用的是htmlapi,访问url如下:
public static final String EXPRESS_API_URL="http://www.kuaidi100.com/applyurl?key=d3d26f3c59bd5a9b&com=com_id&nu=nu_id";
写了个工具类Util.java,具体方法如下:
package com.lml.mykuaidi;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Util {
public String setUrl(String comId, String nuId){
return Constant.EXPRESS_API_URL.replace("com_id", comId).replace("nu_id", nuId);
}
public String getData(String comId, String nuId) {
String content = "" ;
try {
String strUrl=setUrl(comId, nuId);
URL url = new URL(strUrl);
URLConnection con = url.openConnection();
con.setAllowUserInteraction(false);
InputStream urlStream = url.openStream();
String type = URLConnection.guessContentTypeFromStream(urlStream);
String charSet = null;
if (type == null)
type = con.getContentType();
byte b[] = new byte[10000];
int numRead = urlStream.read(b);
content = new String(b, 0, numRead);
while (numRead != -1) {
numRead = urlStream.read(b);
if (numRead != -1) {
String newContent = new String(b, 0, numRead, charSet);
content += newContent;
}
}
urlStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
}
在主函数MainActivity.java中,使用异步加载数据:
package com.lml.mykuaidi;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {
RadioButton rbSpinner, rbEditText;
Spinner spCompany;
EditText etCompany, etNum;
Button btnQuery;
int rbFlag = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findview();
setAdapter();
setListener();
}
private void findview() {
rbSpinner = (RadioButton) findViewById(R.id.rbSpinner);
rbEditText = (RadioButton) findViewById(R.id.rbEditText);
spCompany = (Spinner) findViewById(R.id.spCompany);
etCompany = (EditText) findViewById(R.id.etCompany);
etNum = (EditText) findViewById(R.id.etNum);
btnQuery = (Button) findViewById(R.id.btnQuery);
}
private void setAdapter() {
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.ems_company,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCompany.setAdapter(adapter);
}
private void setListener() {
rbSpinner.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
rbFlag = 1;
rbEditText.setChecked(false);
etCompany.setEnabled(false);
spCompany.setEnabled(true);
}
}
});
rbEditText.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
rbFlag = 2;
rbSpinner.setChecked(false);
etCompany.setEnabled(true);
spCompany.setEnabled(false);
}
}
});
btnQuery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String num = etNum.getText().toString().trim();
String code;
if (rbFlag == 1) {
String[] codes = getResources().getStringArray(R.array.ems_code);
code = codes[spCompany.getSelectedItemPosition()];
} else {
code = etCompany.getText().toString().trim();
if (code.equals("")) {
Toast.makeText(MainActivity.this, "快递公司不能为空", Toast.LENGTH_SHORT)
.show();
}
}
AsyTask task = new AsyTask(MainActivity.this);
task.execute(code, num);
}
});
}
class AsyTask extends AsyncTask<String, Integer, String> {
int i;
Context mContext;
ProgressDialog mDialog = null;
public AsyTask(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
i = 1;
mDialog = new ProgressDialog(mContext);
mDialog.setMessage("Please wait...");
mDialog.setCancelable(false);
mDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
Util util = new Util();
String res = util.getData(arg0[0], arg0[1]);
return res;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null && !result.equals("")) {
Intent intent = new Intent(mContext, DataShowActivity.class);
Bundle bundle = new Bundle();
bundle.putString("data", result);
intent.putExtras(bundle);
startActivity(intent);
} else {
Toast.makeText(mContext, "连接错误!", Toast.LENGTH_SHORT).show();
}
mDialog.dismiss();
}
}
}
现实结果界面DataShowActivity.java如下:
package com.lml.mykuaidi;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.TextView;
public class DataShowActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.kuaidi_info);
String url= getIntent().getStringExtra("data");
WebView wvData=(WebView)findViewById(R.id.wvData);
wvData.getSettings().setDefaultTextEncodingName("utf-8") ;
wvData.getSettings().setJavaScriptEnabled(true);
String content ="<html><body><iframe name=\"kuaidi100\" src=\""+url+"\" width=\"600\" height=\"380\" "
+ "marginwidth=\"0\" marginheight=\"0\" hspace=\"0\" vspace=\"0\" frameborder=\"0\" scrolling=\"no\"></iframe></body></html>";
wvData.loadDataWithBaseURL(null,content, "text/html", "UTF-8",null) ;
}
}
这是一个简单的demo,具体源码见附件。
我的快递api是快递100提供的,由于支持问题,使用的是htmlapi,访问url如下:
public static final String EXPRESS_API_URL="http://www.kuaidi100.com/applyurl?key=d3d26f3c59bd5a9b&com=com_id&nu=nu_id";
写了个工具类Util.java,具体方法如下:
package com.lml.mykuaidi;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Util {
public String setUrl(String comId, String nuId){
return Constant.EXPRESS_API_URL.replace("com_id", comId).replace("nu_id", nuId);
}
public String getData(String comId, String nuId) {
String content = "" ;
try {
String strUrl=setUrl(comId, nuId);
URL url = new URL(strUrl);
URLConnection con = url.openConnection();
con.setAllowUserInteraction(false);
InputStream urlStream = url.openStream();
String type = URLConnection.guessContentTypeFromStream(urlStream);
String charSet = null;
if (type == null)
type = con.getContentType();
byte b[] = new byte[10000];
int numRead = urlStream.read(b);
content = new String(b, 0, numRead);
while (numRead != -1) {
numRead = urlStream.read(b);
if (numRead != -1) {
String newContent = new String(b, 0, numRead, charSet);
content += newContent;
}
}
urlStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
}
在主函数MainActivity.java中,使用异步加载数据:
package com.lml.mykuaidi;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends Activity {
RadioButton rbSpinner, rbEditText;
Spinner spCompany;
EditText etCompany, etNum;
Button btnQuery;
int rbFlag = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findview();
setAdapter();
setListener();
}
private void findview() {
rbSpinner = (RadioButton) findViewById(R.id.rbSpinner);
rbEditText = (RadioButton) findViewById(R.id.rbEditText);
spCompany = (Spinner) findViewById(R.id.spCompany);
etCompany = (EditText) findViewById(R.id.etCompany);
etNum = (EditText) findViewById(R.id.etNum);
btnQuery = (Button) findViewById(R.id.btnQuery);
}
private void setAdapter() {
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.ems_company,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spCompany.setAdapter(adapter);
}
private void setListener() {
rbSpinner.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
rbFlag = 1;
rbEditText.setChecked(false);
etCompany.setEnabled(false);
spCompany.setEnabled(true);
}
}
});
rbEditText.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
rbFlag = 2;
rbSpinner.setChecked(false);
etCompany.setEnabled(true);
spCompany.setEnabled(false);
}
}
});
btnQuery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String num = etNum.getText().toString().trim();
String code;
if (rbFlag == 1) {
String[] codes = getResources().getStringArray(R.array.ems_code);
code = codes[spCompany.getSelectedItemPosition()];
} else {
code = etCompany.getText().toString().trim();
if (code.equals("")) {
Toast.makeText(MainActivity.this, "快递公司不能为空", Toast.LENGTH_SHORT)
.show();
}
}
AsyTask task = new AsyTask(MainActivity.this);
task.execute(code, num);
}
});
}
class AsyTask extends AsyncTask<String, Integer, String> {
int i;
Context mContext;
ProgressDialog mDialog = null;
public AsyTask(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
i = 1;
mDialog = new ProgressDialog(mContext);
mDialog.setMessage("Please wait...");
mDialog.setCancelable(false);
mDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
Util util = new Util();
String res = util.getData(arg0[0], arg0[1]);
return res;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null && !result.equals("")) {
Intent intent = new Intent(mContext, DataShowActivity.class);
Bundle bundle = new Bundle();
bundle.putString("data", result);
intent.putExtras(bundle);
startActivity(intent);
} else {
Toast.makeText(mContext, "连接错误!", Toast.LENGTH_SHORT).show();
}
mDialog.dismiss();
}
}
}
现实结果界面DataShowActivity.java如下:
package com.lml.mykuaidi;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.TextView;
public class DataShowActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.kuaidi_info);
String url= getIntent().getStringExtra("data");
WebView wvData=(WebView)findViewById(R.id.wvData);
wvData.getSettings().setDefaultTextEncodingName("utf-8") ;
wvData.getSettings().setJavaScriptEnabled(true);
String content ="<html><body><iframe name=\"kuaidi100\" src=\""+url+"\" width=\"600\" height=\"380\" "
+ "marginwidth=\"0\" marginheight=\"0\" hspace=\"0\" vspace=\"0\" frameborder=\"0\" scrolling=\"no\"></iframe></body></html>";
wvData.loadDataWithBaseURL(null,content, "text/html", "UTF-8",null) ;
}
}
这是一个简单的demo,具体源码见附件。
- MyKuaiDi.rar (1.3 MB)
- 下载次数: 10
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 1013使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 770java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 637我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 600Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 546先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 664相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 874参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 414图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 482参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2680今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 569由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2131Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 627最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 696以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 521参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 443参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1257参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2389参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 668http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 625用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
wrf转mp4播放器1.1.1
内容概要:本文档详细介绍了如何在Simulink中设计一个满足特定规格的音频带ADC(模数转换器)。首先选择了三阶单环多位量化Σ-Δ调制器作为设计方案,因为这种结构能在音频带宽内提供高噪声整形效果,并且多位量化可以降低量化噪声。接着,文档展示了具体的Simulink建模步骤,包括创建模型、添加各个组件如积分器、量化器、DAC反馈以及连接它们。此外,还进行了参数设计与计算,特别是过采样率和信噪比的估算,并引入了动态元件匹配技术来减少DAC的非线性误差。性能验证部分则通过理想和非理想的仿真实验评估了系统的稳定性和各项指标,最终证明所设计的ADC能够达到预期的技术标准。 适用人群:电子工程专业学生、从事数据转换器研究或开发的技术人员。 使用场景及目标:适用于希望深入了解Σ-Δ调制器的工作原理及其在音频带ADC应用中的具体实现方法的人群。目标是掌握如何利用MATLAB/Simulink工具进行复杂电路的设计与仿真。 其他说明:文中提供了详细的Matlab代码片段用于指导读者完成整个设计流程,同时附带了一些辅助函数帮助分析仿真结果。
国网台区终端最新规范
《基于YOLOv8的智慧农业水肥一体化控制系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
GSDML-V2.33-LEUZE-AMS3048i-20170622.xml
微信小程序项目课程设计,包含LW+ppt
微信小程序项目课程设计,包含LW+ppt
终端运行进度条脚本
幼儿园预防肺结核教育培训课件资料
python,python相关资源
《基于YOLOv8的智慧校园电动车充电桩状态监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
deepseek 临床之理性软肋.pdf
SM2258XT量产工具(包含16种程序),固态硬盘量产工具使用
RecyclerView.zip
水务大脑让水务运营更智能(23页)
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
大众捷达轿车前轮制动器设计
《基于YOLOv8的智能工厂压缩空气泄漏检测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
3米-翻抛机