简介
小马快递,您的好帮手。查询并跟踪快递,快递信息及时掌握。
支持全国100多家快递公司,支持扫码查询,智能识别快递公司。
附带生成二维码小工具,方便实用。体积小巧,无广告,无多余权限。
更新说明
v 2.0
- 全新UI,高仿“支付宝-我的快递”
- 新增智能识别快递公司
- 新增扫一扫
v 1.5
- 新增自动更新
v 1.4
- 修复无法查询快递的问题
- 支持Android 6.0
- 支持运单备注
- 优化单号扫描界面
下载地址
fir.im:http://fir.im/ponyexpress
应用宝:http://android.myapp.com/myapp/detail.htm?apkName=me.wcy.express
项目
公开API
- 快递查询:快递100(非公开,侵权删)
开源技术
- ZXing
- Volley
- Gson
- ormlite
- Glide
关键代码
网络请求Volley+Gson
private void search() { GsonRequest<SearchResult> request = new GsonRequest<SearchResult>(Utils.formatSearchUrl(mSearchInfo), SearchResult.class, new Response.Listener<SearchResult>() { @Override public void onResponse(SearchResult searchResult) { Log.i(TAG, searchResult.getMessage()); onSearch(searchResult); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Log.e(TAG, volleyError.getMessage(), volleyError); onError(); } }) { @Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String, String> headers = new HashMap<>(); headers.put(Constants.HEADER_REFERER, Constants.REFERER); return headers; } }; request.setShouldCache(false); ExpressApplication.getInstance().getRequestQueue().add(request); }
封装GsonRequest
public class GsonRequest<T> extends Request<T> { private Class<T> mClass; private Response.Listener<T> mListener; private Gson mGson; public GsonRequest(int method, String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) { super(method, url, errorListener); mClass = clazz; mListener = listener; mGson = new Gson(); } public GsonRequest(String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) { this(Method.GET, url, clazz, listener, errorListener); } @Override protected Response<T> parseNetworkResponse(NetworkResponse response) { String jsonString; try { jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(mGson.fromJson(jsonString, mClass), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(T response) { mListener.onResponse(response); } }
截图
资源均来自第三方,谨慎下载,前往第三方网站下载